tabular-data-widget-common-.../src/main/java/org/gcube/portlets/user/td/widgetcommonevent/shared/tr/column/PeriodDataType.java

120 lines
2.7 KiB
Java

package org.gcube.portlets.user.td.widgetcommonevent.shared.tr.column;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* @author "Giancarlo Panichi" <a
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
*
*/
public enum PeriodDataType {
DAY("Day"),
MONTH("Month"),
QUARTER("Quarter_of_year"),
YEAR("Year"),
DECADE("Decade"),
CENTURY("Century");
private static Map<PeriodDataType, List<PeriodDataType>> hierarchicalRelation = new HashMap<PeriodDataType, List<PeriodDataType>>();
static {
hierarchicalRelation.put(DAY, Arrays.asList(MONTH, QUARTER, YEAR, DECADE, CENTURY));
hierarchicalRelation.put(MONTH, Arrays.asList(QUARTER, YEAR, DECADE, CENTURY));
hierarchicalRelation.put(QUARTER, Arrays.asList(YEAR, DECADE, CENTURY));
hierarchicalRelation.put(YEAR, Arrays.asList(DECADE, CENTURY));
hierarchicalRelation.put(DECADE, Arrays.asList(CENTURY));
}
private static final int START_YEAR = 1700;
private static final int END_YEAR = 2300;
/**
* @param text
*/
private PeriodDataType(final String id) {
this.id = id;
}
private final String id;
@Override
public String toString() {
return id;
}
public List<PeriodDataType> getHierarchicalRelationOfPeriodDataType(PeriodDataType periodDataType){
return hierarchicalRelation.get(periodDataType);
}
public Map<PeriodDataType, List<PeriodDataType>> getHierarchicalRelation(){
return hierarchicalRelation;
}
public String getPeriodDataTypeLabel() {
switch (this) {
case DAY:
return "Day";
case MONTH:
return "Month";
case QUARTER:
return "Quarter of year";
case YEAR:
return "Year";
case DECADE:
return "Decade";
case CENTURY:
return "Century";
default:
return null;
}
}
public static int getStartYear(){
return START_YEAR;
}
public static int getEndYear(){
return END_YEAR;
}
public static PeriodDataType getPeriodFromString(String period){
if(period.compareToIgnoreCase(PeriodDataType.DAY.toString())==0){
return PeriodDataType.DAY;
} else {
if(period.compareToIgnoreCase(PeriodDataType.MONTH.toString())==0){
return PeriodDataType.MONTH;
} else {
if(period.compareToIgnoreCase(PeriodDataType.QUARTER.toString())==0){
return PeriodDataType.QUARTER;
} else {
if(period.compareToIgnoreCase(PeriodDataType.YEAR.toString())==0){
return PeriodDataType.YEAR;
} else {
if(period.compareToIgnoreCase(PeriodDataType.DECADE.toString())==0){
return PeriodDataType.DECADE;
} else {
if(period.compareToIgnoreCase(PeriodDataType.CENTURY.toString())==0){
return PeriodDataType.CENTURY;
} else {
return null;
}
}
}
}
}
}
}
}