}
/**
+ * For time periods that need to store more information than the one
+ * that can be stored in <code>start</code> and <code>end</code>.
+ * If free text is not <code>null</null> {@link #toString()} will always
+ * return the free text value.
+ * <BR>Use {@link #toString()} for public use.
* @return the freeText
*/
protected String getFreeText() {
/**
+ * Use {@link #parseSingleDate(String)} for public use.
* @param freeText the freeText to set
*/
protected void setFreeText(String freeText) {
}
periodString = periodString.trim();
- result.setFreeText(periodString);
+ result.setFreeText(null);
//case "1806"[1807];
if (uncorrectYearPatter.matcher(periodString).matches()){
+ result.setFreeText(periodString);
String realYear = periodString.split("\\[")[1];
realYear = realYear.replace("]", "");
result.setStartYear(Integer.valueOf(realYear));
+ result.setFreeText(periodString);
//case fl. 1806 or c. 1806 or fl. 1806?
}else if(prefixedYearPattern.matcher(periodString).matches()){
+ result.setFreeText(periodString);
Matcher yearMatcher = firstYearPattern.matcher(periodString);
yearMatcher.find();
String startYear = yearMatcher.group();
result.setEnd(dtEnd);
} catch (IllegalArgumentException e) {
//logger.warn(e.getMessage());
- //use freetext instead
+ result.setFreeText(periodString);
}
}
+ }else{
+ result.setFreeText(periodString);
}
return result;
}
//**************************** to String ****************************************
+ /**
+ * Returns the {@link #getFreeText()} value if free text is not <code>null</code>.
+ * Otherwise the concatenation of <code>start</code> and <code>end</code> is returned.
+ *
+ * @see java.lang.Object#toString()
+ */
public String toString(){
String result = null;
DateTimeFormatter formatter = new TimePeriodPartialFormatter();
public class TimePeriodTest {\r
private static final Logger logger = Logger.getLogger(TimePeriodTest.class);\r
\r
- TimePeriod onlyStartYear;\r
- TimePeriod onlyEndYear;\r
- TimePeriod startAndEndYear;\r
- TimePeriod noStartAndEndYear;\r
+ private TimePeriod onlyStartYear;\r
+ private TimePeriod onlyEndYear;\r
+ private TimePeriod startAndEndYear;\r
+ private TimePeriod noStartAndEndYear;\r
\r
\r
/**\r
Assert.assertNotNull("Time period must be created",tp);\r
}\r
\r
- @Ignore\r
+// @Ignore\r
@Test\r
public void testSetStart(){\r
Partial startDate = new Partial().with(DateTimeFieldType.year(), 2010)\r
.with(DateTimeFieldType.monthOfYear(), 12)\r
.with(DateTimeFieldType.dayOfMonth(), 16);\r
+ Partial newStartDate = new Partial().with(DateTimeFieldType.year(), 1984)\r
+ .with(DateTimeFieldType.monthOfYear(), 12)\r
+ .with(DateTimeFieldType.dayOfMonth(), 14);\r
+\r
TimePeriod tp = TimePeriod.NewInstance(startDate);\r
- \r
String startString = tp.toString();\r
- \r
- Partial partial = new Partial().with(DateTimeFieldType.year(), 1984)\r
- .with(DateTimeFieldType.monthOfYear(), 12)\r
- .with(DateTimeFieldType.dayOfMonth(), 14);\r
- \r
- tp.setStart(partial);\r
+ assertNull("Freetext should be not set", tp.getFreeText());\r
+ tp.setStart(newStartDate);\r
String changedString = tp.toString();\r
- \r
Assert.assertTrue("Setting the partial should change the string representation of the TimePeriod", !startString.equals(changedString));\r
\r
//\r
- tp = TimePeriod.parseString("15.12.1730");\r
- \r
+ tp = TimePeriod.parseString("1752");\r
+ assertNull("Freetext should be not set", tp.getFreeText());\r
startString = tp.toString();\r
- tp.setStart(partial);\r
+ tp.setStart(newStartDate);\r
changedString = tp.toString();\r
- \r
Assert.assertTrue("Setting a partial for a parsed time period should change the string representation of the TimePeriod ", !startString.equals(changedString));\r
+\r
+ //\r
+ tp = TimePeriod.parseString("any strange date");\r
+ assertNotNull("Freetext should be set", tp.getFreeText());\r
+ startString = tp.toString();\r
+ tp.setStart(newStartDate);\r
+ changedString = tp.toString();\r
+ Assert.assertEquals("Setting a partial for a time period having the freetext set should not change the string representation of the TimePeriod ", startString, changedString);\r
+\r
+ \r
+ //\r
+// tp = TimePeriod.parseString("15.12.1730"); //TODO currently not parsed\r
+// \r
+// startString = tp.toString();\r
+// tp.setStart(newStartDate);\r
+// changedString = tp.toString();\r
+// \r
+// Assert.assertTrue("Setting a partial for a parsed time period should change the string representation of the TimePeriod ", !startString.equals(changedString));\r
}\r
\r
/**\r