@Override public String toString() { return "[" + (periodType == null ? "" : periodType.getName() + ": ") + startDate + " - " + endDate + "]"; }
@Override public String toString() { return "[" + getName() + "]"; } }
@Override public void serialize( PeriodType value, JsonGenerator jgen, SerializerProvider provider ) throws IOException { if ( value != null ) { jgen.writeString( value.getName() ); } } }
@Override public int hashCode() { return getName().hashCode(); }
/** * Returns a unique key suitable for caching and lookups. */ public String getCacheKey() { return periodType.getName() + "-" + startDate.toString() + "-" + endDate.toString(); }
public static PeriodType getByNameIgnoreCase( String name ) { for ( PeriodType periodType : getAvailablePeriodTypes() ) { if ( name != null && periodType.getName().toLowerCase().trim().equals( name.toLowerCase().trim() ) ) { return periodType; } } return null; }
private String getCacheKey( org.hisp.dhis.calendar.Calendar calendar, Date date ) { return calendar.name() + getName() + date.getTime(); }
/** * Validates this period. TODO Make more comprehensive. */ public boolean isValid() { if ( startDate == null || endDate == null || periodType == null ) { return false; } if ( !DailyPeriodType.NAME.equals( periodType.getName() ) && getDaysInPeriod() < 2 ) { return false; } return true; }
private String getCacheKey( Date date ) { return getCalendar().name() + getName() + date.getTime(); }
@Override public String getCreateTempTableStatement() { String sql = "create table " + getTempTableName() + " (dateperiod date not null primary key, year integer not null"; for ( PeriodType periodType : PeriodType.PERIOD_TYPES ) { sql += ", " + quote( periodType.getName().toLowerCase() ) + " varchar(15)"; } sql += ")"; return sql; }
@Override public String getCreateTempTableStatement() { String sql = "create table " + getTempTableName() + " (periodid integer not null primary key, iso varchar(15) not null, daysno integer not null, startdate date not null, enddate date not null, year integer not null"; for ( PeriodType periodType : PeriodType.PERIOD_TYPES ) { sql += ", " + quote( periodType.getName().toLowerCase() ) + " varchar(15)"; } sql += ")"; return sql; }
@Override public int compare( Period period1, Period period2 ) { PeriodType a = period1.getPeriodType(); PeriodType b = period2.getPeriodType(); int freqCompare = Integer.compare( a.getFrequencyOrder(), b.getFrequencyOrder() ); int nameCompare = a.getName().compareTo( b.getName() ); return freqCompare == 0 ? ( nameCompare == 0 ? period1.getStartDate().compareTo(period2.getStartDate() ) : nameCompare ) : freqCompare; } }
@Override public PeriodType reloadPeriodType( PeriodType periodType ) { Session session = sessionFactory.getCurrentSession(); if ( periodType == null || session.contains( periodType ) ) { return periodType; } PeriodType reloadedPeriodType = getPeriodType( periodType.getClass() ); if ( reloadedPeriodType == null ) { throw new InvalidIdentifierReferenceException( "The PeriodType referenced by the Period is not in database: " + periodType.getName() ); } return reloadedPeriodType; }
@Override public void executeInTransaction() { List<PeriodType> types = PeriodType.getAvailablePeriodTypes(); Collection<PeriodType> storedTypes = periodStore.getAllPeriodTypes(); types.removeAll( storedTypes ); // --------------------------------------------------------------------- // Populate missing // --------------------------------------------------------------------- for ( PeriodType type : types ) { periodStore.addPeriodType( type ); LOG.debug( "Added PeriodType: " + type.getName() ); } } }
@Override public List<String> getCreateIndexStatements() { List<String> indexes = new ArrayList<>(); for ( PeriodType periodType : PeriodType.PERIOD_TYPES ) { String colName = periodType.getName().toLowerCase(); String indexName = "in" + getTableName() + "_" + colName + "_" + getRandomSuffix(); String sql = "create index " + indexName + " on " + getTempTableName() + "(" + quote( colName ) + ")"; indexes.add( sql ); } return indexes; } }
/** * Creates a mapping between period type name and period for the given periods. */ public static ListMap<String, DimensionalItemObject> getPeriodTypePeriodMap( Collection<DimensionalItemObject> periods ) { ListMap<String, DimensionalItemObject> map = new ListMap<>(); for ( DimensionalItemObject period : periods ) { String periodTypeName = ((Period) period).getPeriodType().getName(); map.putValue( periodTypeName, period ); } return map; }
@Override public <T extends IdentifiableObject> void preUpdate( T object, T persistedObject, ObjectBundle bundle ) { Schema schema = schemaService.getDynamicSchema( object.getClass() ); for ( Property property : schema.getPropertyMap().values() ) { if ( PeriodType.class.isAssignableFrom( property.getKlass() ) ) { PeriodType periodType = ReflectionUtils.invokeMethod( object, property.getGetterMethod() ); if ( periodType != null ) { periodType = bundle.getPreheat().getPeriodTypeMap().get( periodType.getName() ); ReflectionUtils.invokeMethod( object, property.getSetterMethod(), periodType ); } } } } }
@Override public <T extends IdentifiableObject> void preCreate( T object, ObjectBundle bundle ) { Schema schema = schemaService.getDynamicSchema( object.getClass() ); for ( Property property : schema.getPropertyMap().values() ) { if ( PeriodType.class.isAssignableFrom( property.getKlass() ) ) { PeriodType periodType = ReflectionUtils.invokeMethod( object, property.getGetterMethod() ); if ( periodType != null ) { periodType = bundle.getPreheat().getPeriodTypeMap().get( periodType.getName() ); periodType = periodService.reloadPeriodType( periodType ); ReflectionUtils.invokeMethod( object, property.getSetterMethod(), periodType ); } } } }
@Override public List<Period> getDuplicatePeriods() { Collection<Period> periods = periodService.getAllPeriods(); List<Period> duplicates = new ArrayList<>(); ListMap<String, Period> map = new ListMap<>(); for ( Period period : periods ) { String key = period.getPeriodType().getName() + period.getStartDate().toString(); period.setName( period.toString() ); map.putValue( key, period ); } for ( String key : map.keySet() ) { List<Period> values = map.get( key ); if ( values != null && values.size() > 1 ) { duplicates.addAll( values ); } } return duplicates; }