Skip to content

Commit 6002436

Browse files
jirka.pinkas@gmail.comjirka.pinkas@gmail.com
authored andcommitted
added addPages(Collection<T> webPages, Function<T, WebPage> mapper) method on SitemapGenerator so that it's possible to use functional programming syntax to populate sitemap
1 parent d9e5d1f commit 6002436

File tree

5 files changed

+67
-23
lines changed

5 files changed

+67
-23
lines changed

README.md

Lines changed: 17 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ First add this library to classpath:
1212
<dependency>
1313
<groupId>cz.jiripinkas</groupId>
1414
<artifactId>jsitemapgenerator</artifactId>
15-
<version>3.0</version>
15+
<version>3.1</version>
1616
</dependency>
1717

1818
If you want to use "ping google / bing" functionality, also add this library to classpath:
@@ -25,30 +25,27 @@ If you want to use "ping google / bing" functionality, also add this library to
2525

2626
### How to create a sitemap:
2727

28-
2928
// create web sitemap for web http://www.javavids.com
30-
SitemapGenerator sitemapGenerator = new SitemapGenerator("http://www.javavids.com");
29+
SitemapGenerator sg = new SitemapGenerator("http://www.javavids.com");
3130
// add some URLs
32-
sitemapGenerator.addPage(WebPage.builder()
33-
.name("index.php")
34-
.priorityMax()
35-
.changeFreqNever()
36-
.lastModNow()
37-
.build()
38-
);
39-
sitemapGenerator.addPage(WebPage.builder()
40-
.name("latest.php")
41-
.build()
42-
);
43-
sitemapGenerator.addPage(WebPage.builder()
44-
.name("contact.php")
45-
.build()
46-
);
31+
sg.addPage(WebPage.builder().nameRoot().priorityMax().changeFreqNever().lastModNow().build())
32+
.addPage(WebPage.builder().name("latest.php").build())
33+
.addPage(WebPage.builder().name("contact.php").build());
4734
// generate sitemap and save it to file /var/www/sitemap.xml
4835
File file = new File("/var/www/sitemap.xml");
49-
sitemapGenerator.constructAndSaveSitemap(file);
36+
sg.constructAndSaveSitemap(file);
5037
// inform Google that this sitemap has changed
51-
sitemapGenerator.pingGoogle();
38+
sg.pingGoogle();
39+
40+
### How to create a sitemap populated with list of pages:
41+
42+
File file = new File("/var/www/sitemap.xml");
43+
List<String> pages = Arrays.asList("firstPage", "secondPage", "otherPage");
44+
// create web sitemap for web http://www.javavids.com
45+
new SitemapGenerator("http://www.javavids.com")
46+
.addPage(WebPage.builder().nameRoot().priorityMax().changeFreqNever().lastModNow().build())
47+
.addPages(urls, page -> WebPage.builder().name("dir/" + page).priorityMax().changeFreqNever().lastModNow().build())
48+
.constructAndSaveSitemap(file);
5249

5350
### How to create a sitemap index:
5451

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<modelVersion>4.0.0</modelVersion>
44
<groupId>cz.jiripinkas</groupId>
55
<artifactId>jsitemapgenerator</artifactId>
6-
<version>3.0</version>
6+
<version>3.1</version>
77
<packaging>jar</packaging>
88
<name>Java sitemap generator</name>
99
<description>This library generates a web sitemap and can ping Google that it has changed. This project has been inspired by sitemapgen4j, but is much more focused on traditional web sitemap and ease of use.</description>

src/main/java/cz/jiripinkas/jsitemapgenerator/AbstractGenerator.java

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
package cz.jiripinkas.jsitemapgenerator;
22

3+
import cz.jiripinkas.jsitemapgenerator.exception.InvalidUrlException;
4+
35
import java.net.MalformedURLException;
46
import java.net.URL;
57
import java.util.Collection;
68
import java.util.Map;
79
import java.util.TreeMap;
8-
9-
import cz.jiripinkas.jsitemapgenerator.exception.InvalidUrlException;
10+
import java.util.function.Function;
1011

1112
public abstract class AbstractGenerator {
1213

@@ -69,4 +70,19 @@ public AbstractGenerator addPages(Collection<WebPage> webPages) {
6970
return this;
7071
}
7172

73+
/**
74+
* Add collection of pages to sitemap
75+
*
76+
* @param <T> This is the type parameter
77+
* @param webPages Collection of pages
78+
* @param mapper Mapper function which transforms some object to WebPage
79+
* @return this
80+
*/
81+
public <T> AbstractGenerator addPages(Collection<T> webPages, Function<T, WebPage> mapper) {
82+
for (T element : webPages) {
83+
addPage(mapper.apply(element));
84+
}
85+
return this;
86+
}
87+
7288
}

src/main/java/cz/jiripinkas/jsitemapgenerator/generator/RssGenerator.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
import java.text.SimpleDateFormat;
77
import java.util.*;
8+
import java.util.function.Function;
89

910
public class RssGenerator extends AbstractGenerator {
1011

@@ -122,5 +123,19 @@ public RssGenerator addPages(Collection<WebPage> webPages) {
122123
return this;
123124
}
124125

126+
/**
127+
* Add collection of pages to sitemap
128+
*
129+
* @param webPages Collection of pages
130+
* @param mapper Mapper function which transforms some object to WebPage
131+
* @return this
132+
*/
133+
public <T> RssGenerator addPages(Collection<T> webPages, Function<T, WebPage> mapper) {
134+
for (T element : webPages) {
135+
addPage(mapper.apply(element));
136+
}
137+
return this;
138+
}
139+
125140

126141
}

src/main/java/cz/jiripinkas/jsitemapgenerator/generator/SitemapGenerator.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package cz.jiripinkas.jsitemapgenerator.generator;
22

3+
import cz.jiripinkas.jsitemapgenerator.AbstractGenerator;
34
import cz.jiripinkas.jsitemapgenerator.AbstractSitemapGenerator;
45
import cz.jiripinkas.jsitemapgenerator.Image;
56
import cz.jiripinkas.jsitemapgenerator.WebPage;
@@ -11,6 +12,7 @@
1112
import java.util.Arrays;
1213
import java.util.Collection;
1314
import java.util.Collections;
15+
import java.util.function.Function;
1416

1517
public class SitemapGenerator extends AbstractSitemapGenerator {
1618

@@ -154,4 +156,18 @@ public SitemapGenerator addPages(Collection<WebPage> webPages) {
154156
return this;
155157
}
156158

159+
/**
160+
* Add collection of pages to sitemap
161+
*
162+
* @param webPages Collection of pages
163+
* @param mapper Mapper function which transforms some object to WebPage
164+
* @return this
165+
*/
166+
public <T> SitemapGenerator addPages(Collection<T> webPages, Function<T, WebPage> mapper) {
167+
for (T element : webPages) {
168+
addPage(mapper.apply(element));
169+
}
170+
return this;
171+
}
172+
157173
}

0 commit comments

Comments
 (0)