Skip to content

Commit 6720bc7

Browse files
jirka.pinkas@gmail.comjirka.pinkas@gmail.com
authored andcommitted
rewrote logic of defaultXXX() methods so that it's much more flexible, applies to all following WebPages and can be overriden later on
1 parent 19d6016 commit 6720bc7

File tree

9 files changed

+201
-70
lines changed

9 files changed

+201
-70
lines changed

README.md

Lines changed: 21 additions & 2 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.7</version>
15+
<version>3.8</version>
1616
</dependency>
1717

1818
If you want to use "ping google / bing" functionality, also add this library to classpath:
@@ -27,7 +27,6 @@ If you want to use "ping google / bing" functionality, also add this library to
2727

2828
```java
2929
String sitemap = SitemapGenerator.of("https://example.com")
30-
.defaultChangeFreqWeekly() // optional default settings for all WebPages
3130
.addPage(WebPage.builder().maxPriorityRoot().build())
3231
.addPage(WebPage.of("foo.html")) // simplest way of creating web page
3332
.addPage(WebPage.builder().name("bar.html").build()) // builder is more complex
@@ -44,6 +43,26 @@ byte[] sitemap = SitemapGenerator.of("https://example.com")
4443
.constructSitemapGzip();
4544
```
4645

46+
you can set default settings (for the following WebPages):
47+
48+
```java
49+
String sitemap = SitemapGenerator.of("https://example.com")
50+
.addPage(WebPage.builder().maxPriorityRoot().build()) // URL will be: "/"
51+
.defaultExtension("html")
52+
.defaultDir("dir1")
53+
.addPage(WebPage.of("foo")) // URL will be: "dir1/foo.html"
54+
.addPage(WebPage.of("bar"))) // URL will be: "dir1/bar.html"
55+
.defaultDir("dir2")
56+
.addPage(WebPage.of("hello")) // URL will be: "dir2/hello.html"
57+
.addPage(WebPage.of("yello"))) // URL will be: "dir2/yello.html"
58+
// btw. specifying dir and / or extension on WebPage overrides default settings
59+
.addPage(WebPage.builder().dir("dir3").extension(null).name("test").build()) // "dir3/test"
60+
.resetDefaultDir() // resets default dir
61+
.resetDefaultExtension() // resets default extension
62+
.addPage(WebPage.of("mypage")) // URL will be: "mypage"
63+
.constructSitemapString();
64+
```
65+
4766
or to store it to file & ping google:
4867

4968
```java

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.7</version>
6+
<version>3.8</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: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,10 +58,20 @@ public AbstractGenerator(String baseUrl) {
5858
* @return this
5959
*/
6060
public I addPage(WebPage webPage) {
61-
urls.put(baseUrl + webPage.getName(), webPage);
61+
beforeAddPageEvent(webPage);
62+
urls.put(baseUrl + webPage.constructName(), webPage);
6263
return getThis();
6364
}
6465

66+
/**
67+
* This method is called before adding a page to urls.
68+
* It can be used to change webPage attributes
69+
* @param webPage WebPage
70+
*/
71+
protected void beforeAddPageEvent(WebPage webPage) {
72+
73+
}
74+
6575
/**
6676
* Add collection of pages to sitemap
6777
*

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

Lines changed: 43 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,14 @@
99

1010
public class WebPage implements Comparable<WebPage> {
1111
private String name;
12+
/**
13+
* Optional dir. In getName() it's added to name: "dir/name"
14+
*/
15+
private String dir;
16+
/**
17+
* Optional dir. In getName() it's added to name: "name.extension"
18+
*/
19+
private String extension;
1220
private Map<String, String> alternateNames;
1321
private Date lastMod;
1422
private ChangeFreq changeFreq;
@@ -97,8 +105,19 @@ public void setPriority(Double priority) {
97105
this.priority = priority;
98106
}
99107

100-
public String getName() {
101-
return name;
108+
/**
109+
* Constructs name from dir and extension (if available)
110+
* @return Name
111+
*/
112+
public String constructName() {
113+
String result = name;
114+
if(dir != null) {
115+
result = dir + "/" + result;
116+
}
117+
if(extension != null) {
118+
result = result + "." + extension;
119+
}
120+
return result;
102121
}
103122

104123
public Map<String, String> getAlternateNames() {
@@ -117,6 +136,22 @@ public Double getPriority() {
117136
return priority;
118137
}
119138

139+
public String getDir() {
140+
return dir;
141+
}
142+
143+
public void setDir(String dir) {
144+
this.dir = dir;
145+
}
146+
147+
public String getExtension() {
148+
return extension;
149+
}
150+
151+
public void setExtension(String extension) {
152+
this.extension = extension;
153+
}
154+
120155
private static final Comparator<Double> PRIORITY_COMPARATOR = (a, b) -> {
121156
if (a == null && b == null) {
122157
return 0;
@@ -163,8 +198,6 @@ public static WebPageBuilder builder() {
163198

164199
public static class WebPageBuilder {
165200
private WebPage webPage = new WebPage();
166-
private String dir;
167-
private String extension;
168201

169202
/**
170203
* Sets WebPage name
@@ -228,7 +261,7 @@ public WebPageBuilder alternateName(String language, Supplier<String> supplier)
228261
* @return this
229262
*/
230263
public WebPageBuilder dir(String dirName) {
231-
this.dir = dirName;
264+
webPage.setDir(dirName);
232265
return this;
233266
}
234267

@@ -238,7 +271,7 @@ public WebPageBuilder dir(String dirName) {
238271
* @return this
239272
*/
240273
public WebPageBuilder dir(String ... dirNames) {
241-
this.dir = String.join("/", dirNames);
274+
webPage.setDir(String.join("/", dirNames));
242275
return this;
243276
}
244277

@@ -248,7 +281,7 @@ public WebPageBuilder dir(String ... dirNames) {
248281
* @return this
249282
*/
250283
public WebPageBuilder extension(String extension) {
251-
this.extension = extension;
284+
webPage.setExtension(extension);
252285
return this;
253286
}
254287

@@ -420,12 +453,6 @@ public WebPageBuilder images(List<Image> images) {
420453
* @return WebPage
421454
*/
422455
public WebPage build() {
423-
if(dir != null) {
424-
webPage.setName(dir + "/" + webPage.getName());
425-
}
426-
if(extension != null) {
427-
webPage.setName(webPage.getName() + "." + extension);
428-
}
429456
return webPage;
430457
}
431458

@@ -438,8 +465,6 @@ public static RssItemBuilder rssBuilder() {
438465
public static class RssItemBuilder {
439466

440467
private WebPage webPage = new WebPage();
441-
private String namePrefixDir;
442-
private String nameSuffixExtension;
443468

444469
/**
445470
* Sets pubDate
@@ -550,7 +575,7 @@ public RssItemBuilder name(String ... nameAndDirs) {
550575
* @return this
551576
*/
552577
public RssItemBuilder dir(String dirName) {
553-
this.namePrefixDir = dirName;
578+
webPage.setDir(dirName);
554579
return this;
555580
}
556581

@@ -560,7 +585,7 @@ public RssItemBuilder dir(String dirName) {
560585
* @return this
561586
*/
562587
public RssItemBuilder dir(String ... dirNames) {
563-
this.namePrefixDir = String.join("/", dirNames);
588+
webPage.setDir(String.join("/", dirNames));
564589
return this;
565590
}
566591

@@ -570,7 +595,7 @@ public RssItemBuilder dir(String ... dirNames) {
570595
* @return this
571596
*/
572597
public RssItemBuilder extension(String extension) {
573-
this.nameSuffixExtension = extension;
598+
webPage.setExtension(extension);
574599
return this;
575600
}
576601

@@ -580,12 +605,6 @@ public RssItemBuilder extension(String extension) {
580605
* @return WebPage
581606
*/
582607
public WebPage build() {
583-
if(namePrefixDir != null) {
584-
webPage.setName(namePrefixDir + "/" + webPage.getName());
585-
}
586-
if(nameSuffixExtension != null) {
587-
webPage.setName(webPage.getName() + "." + nameSuffixExtension);
588-
}
589608
return webPage;
590609
}
591610

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ public String constructRss() {
142142
builder.append("<item>" + "\n");
143143

144144
builder.append("<title>");
145-
builder.append(webPage.getName());
145+
builder.append(webPage.constructName());
146146
builder.append("</title>" + "\n");
147147

148148
builder.append("<description>");

0 commit comments

Comments
 (0)