From 6187610641fb0da97efbbf6efbed7ecbefd4e65c Mon Sep 17 00:00:00 2001 From: Peter Donald Date: Sun, 6 Jan 2002 02:14:32 +0000 Subject: [PATCH] Move entry to being a top level class and clean up naming conventions git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@270577 13f79535-47bb-0310-9956-ffa450edef68 --- .../tools/ant/taskdefs/optional/Entry.java | 486 ++++++++++++++++ .../ant/taskdefs/optional/PropertyFile.java | 526 +----------------- .../tools/ant/taskdefs/optional/Entry.java | 486 ++++++++++++++++ .../ant/taskdefs/optional/PropertyFile.java | 526 +----------------- 4 files changed, 1010 insertions(+), 1014 deletions(-) create mode 100644 proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/Entry.java create mode 100644 proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/Entry.java diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/Entry.java b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/Entry.java new file mode 100644 index 000000000..138e3d928 --- /dev/null +++ b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/Entry.java @@ -0,0 +1,486 @@ +/* + * Copyright (C) The Apache Software Foundation. All rights reserved. + * + * This software is published under the terms of the Apache Software License + * version 1.1, a copy of which has been included with this distribution in + * the LICENSE.txt file. + */ +package org.apache.tools.ant.taskdefs.optional; + +import java.text.DateFormat; +import java.text.DecimalFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; +import java.util.GregorianCalendar; +import java.util.Properties; +import org.apache.myrmidon.api.TaskException; +import org.apache.tools.ant.types.EnumeratedAttribute; + +/** + * Instance of this class represents nested elements of a task propertyfile. + */ +public class Entry +{ + final static String NOW_VALUE_ = "now"; + final static String NULL_VALUE_ = "never"; + + private final static int DEFAULT_INT_VALUE = 1; + private final static GregorianCalendar + DEFAULT_DATE_VALUE = new GregorianCalendar(); + + private String m_key; + private int m_type = Type.STRING_TYPE; + private int m_operation = Operation.EQUALS_OPER; + private String m_value = ""; + private String m_default; + private String m_pattern; + + public void setDefault( String value ) + { + this.m_default = value; + } + + public void setKey( String value ) + { + this.m_key = value; + } + + public void setOperation( Operation value ) + { + int newOperation = Operation.toOperation( value.getValue() ); + if( newOperation == Operation.NOW_VALUE ) + { + this.m_operation = Operation.EQUALS_OPER; + this.setValue( this.NOW_VALUE_ ); + } + else if( newOperation == Operation.NULL_VALUE ) + { + this.m_operation = Operation.EQUALS_OPER; + this.setValue( this.NULL_VALUE_ ); + } + else + { + this.m_operation = newOperation; + } + } + + public void setPattern( String value ) + { + this.m_pattern = value; + } + + public void setType( Type value ) + { + this.m_type = Type.toType( value.getValue() ); + } + + public void setValue( String value ) + { + this.m_value = value; + } + + protected void executeOn( Properties props ) + throws TaskException + { + checkParameters(); + + // m_type may be null because it wasn't set + try + { + if( m_type == Type.INTEGER_TYPE ) + { + executeInteger( (String)props.get( m_key ) ); + } + else if( m_type == Type.DATE_TYPE ) + { + executeDate( (String)props.get( m_key ) ); + } + else if( m_type == Type.STRING_TYPE ) + { + executeString( (String)props.get( m_key ) ); + } + else + { + throw new TaskException( "Unknown operation type: " + m_type + "" ); + } + } + catch( NullPointerException npe ) + { + // Default to string type + // which means do nothing + npe.printStackTrace(); + } + // Insert as a string by default + props.put( m_key, m_value ); + + } + + /** + * Check if parameter combinations can be supported + * + * @exception TaskException Description of Exception + */ + private void checkParameters() + throws TaskException + { + if( m_type == Type.STRING_TYPE && + m_operation == Operation.DECREMENT_OPER ) + { + throw new TaskException( "- is not suported for string properties (key:" + m_key + ")" ); + } + if( m_value == null && m_default == null ) + { + throw new TaskException( "value and/or default must be specified (key:" + m_key + ")" ); + } + if( m_key == null ) + { + throw new TaskException( "key is mandatory" ); + } + if( m_type == Type.STRING_TYPE && + m_pattern != null ) + { + throw new TaskException( "pattern is not suported for string properties (key:" + m_key + ")" ); + } + } + + /** + * Handle operations for type date. + * + * @param oldValue the current value read from the property file or + * null if the key was not contained in + * the property file. + * @exception TaskException Description of Exception + */ + private void executeDate( String oldValue ) + throws TaskException + { + GregorianCalendar value = new GregorianCalendar(); + GregorianCalendar newValue = new GregorianCalendar(); + + if( m_pattern == null ) + m_pattern = "yyyy/MM/dd HH:mm"; + DateFormat fmt = new SimpleDateFormat( m_pattern ); + + // special case + if( m_default != null && + NOW_VALUE_.equals( m_default.toLowerCase() ) && + ( m_operation == Operation.INCREMENT_OPER || + m_operation == Operation.DECREMENT_OPER ) ) + { + oldValue = null; + } + + if( oldValue != null ) + { + try + { + value.setTime( fmt.parse( oldValue ) ); + } + catch( ParseException pe ) + { + /* + * swollow + */ + } + } + + if( m_value != null ) + { + if( NOW_VALUE_.equals( m_value.toLowerCase() ) ) + { + value.setTime( new Date() ); + } + else if( NULL_VALUE_.equals( m_value.toLowerCase() ) ) + { + value = null; + } + else + { + try + { + value.setTime( fmt.parse( m_value ) ); + } + catch( Exception ex ) + { + // obviously not a date, try a simple int + try + { + int offset = Integer.parseInt( m_value ); + value.clear(); + value.set( Calendar.DAY_OF_YEAR, offset ); + } + catch( Exception ex_ ) + { + value.clear(); + value.set( Calendar.DAY_OF_YEAR, 1 ); + } + } + + } + } + + if( m_default != null && oldValue == null ) + { + if( NOW_VALUE_.equals( m_default.toLowerCase() ) ) + { + value.setTime( new Date() ); + } + else if( NULL_VALUE_.equals( m_default.toLowerCase() ) ) + { + value = null; + } + else + { + try + { + value.setTime( fmt.parse( m_default ) ); + } + catch( ParseException pe ) + { + /* + * swollow + */ + } + } + } + + if( m_operation == Operation.EQUALS_OPER ) + { + newValue = value; + } + else if( m_operation == Operation.INCREMENT_OPER ) + { + newValue.add( Calendar.SECOND, value.get( Calendar.SECOND ) ); + newValue.add( Calendar.MINUTE, value.get( Calendar.MINUTE ) ); + newValue.add( Calendar.HOUR_OF_DAY, value.get( Calendar.HOUR_OF_DAY ) ); + newValue.add( Calendar.DAY_OF_YEAR, value.get( Calendar.DAY_OF_YEAR ) ); + } + else if( m_operation == Operation.DECREMENT_OPER ) + { + newValue.add( Calendar.SECOND, -1 * value.get( Calendar.SECOND ) ); + newValue.add( Calendar.MINUTE, -1 * value.get( Calendar.MINUTE ) ); + newValue.add( Calendar.HOUR_OF_DAY, -1 * value.get( Calendar.HOUR_OF_DAY ) ); + newValue.add( Calendar.DAY_OF_YEAR, -1 * value.get( Calendar.DAY_OF_YEAR ) ); + } + if( newValue != null ) + { + m_value = fmt.format( newValue.getTime() ); + } + else + { + m_value = ""; + } + } + + /** + * Handle operations for type int. + * + * @param oldValue the current value read from the property file or + * null if the key was not contained in + * the property file. + * @exception TaskException Description of Exception + */ + private void executeInteger( String oldValue ) + throws TaskException + { + int value = 0; + int newValue = 0; + + DecimalFormat fmt = ( m_pattern != null ) ? new DecimalFormat( m_pattern ) + : new DecimalFormat(); + + if( oldValue != null ) + { + try + { + value = fmt.parse( oldValue ).intValue(); + } + catch( NumberFormatException nfe ) + { + /* + * swollow + */ + } + catch( ParseException pe ) + { + /* + * swollow + */ + } + } + if( m_value != null ) + { + try + { + value = fmt.parse( m_value ).intValue(); + } + catch( NumberFormatException nfe ) + { + /* + * swollow + */ + } + catch( ParseException pe ) + { + /* + * swollow + */ + } + } + if( m_default != null && oldValue == null ) + { + try + { + value = fmt.parse( m_default ).intValue(); + } + catch( NumberFormatException nfe ) + { + /* + * swollow + */ + } + catch( ParseException pe ) + { + /* + * swollow + */ + } + } + + if( m_operation == Operation.EQUALS_OPER ) + { + newValue = value; + } + else if( m_operation == Operation.INCREMENT_OPER ) + { + newValue = ++value; + } + else if( m_operation == Operation.DECREMENT_OPER ) + { + newValue = --value; + } + m_value = fmt.format( newValue ); + } + + /** + * Handle operations for type string. + * + * @param oldValue the current value read from the property file or + * null if the key was not contained in + * the property file. + * @exception TaskException Description of Exception + */ + private void executeString( String oldValue ) + throws TaskException + { + String value = ""; + String newValue = ""; + + // the order of events is, of course, very important here + // default initially to the old value + if( oldValue != null ) + { + value = oldValue; + } + // but if a value is specified, use it + if( m_value != null ) + { + value = m_value; + } + // even if value is specified, ignore it and set to the default + // value if it is specified and there is no previous value + if( m_default != null && oldValue == null ) + { + value = m_default; + } + + if( m_operation == Operation.EQUALS_OPER ) + { + newValue = value; + } + else if( m_operation == Operation.INCREMENT_OPER ) + { + newValue += value; + } + m_value = newValue; + } + + /** + * Enumerated attribute with the values "+", "-", "=", "now" and + * "never". + * + * @author RT + */ + public static class Operation extends EnumeratedAttribute + { + + // Property type operations + public final static int INCREMENT_OPER = 0; + public final static int DECREMENT_OPER = 1; + public final static int EQUALS_OPER = 2; + + // Special values + public final static int NOW_VALUE = 3; + public final static int NULL_VALUE = 4; + + public static int toOperation( String oper ) + { + if( "+".equals( oper ) ) + { + return INCREMENT_OPER; + } + else if( "-".equals( oper ) ) + { + return DECREMENT_OPER; + } + else if( NOW_VALUE_.equals( oper ) ) + { + return NOW_VALUE; + } + else if( NULL_VALUE_.equals( oper ) ) + { + return NULL_VALUE; + } + return EQUALS_OPER; + } + + public String[] getValues() + { + return new String[]{"+", "-", "=", NOW_VALUE_, NULL_VALUE_}; + } + } + + /** + * Enumerated attribute with the values "int", "date" and "string". + * + * @author RT + */ + public static class Type extends EnumeratedAttribute + { + + // Property types + public final static int INTEGER_TYPE = 0; + public final static int DATE_TYPE = 1; + public final static int STRING_TYPE = 2; + + public static int toType( String type ) + { + if( "int".equals( type ) ) + { + return INTEGER_TYPE; + } + else if( "date".equals( type ) ) + { + return DATE_TYPE; + } + return STRING_TYPE; + } + + public String[] getValues() + { + return new String[]{"int", "date", "string"}; + } + } +} diff --git a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/PropertyFile.java b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/PropertyFile.java index e77721cb8..6cbb7614c 100644 --- a/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/PropertyFile.java +++ b/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/PropertyFile.java @@ -16,19 +16,11 @@ import java.io.IOException; import java.io.OutputStream; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; -import java.text.DateFormat; -import java.text.DecimalFormat; -import java.text.ParseException; -import java.text.SimpleDateFormat; import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.GregorianCalendar; import java.util.Iterator; import java.util.Properties; +import org.apache.myrmidon.api.AbstractTask; import org.apache.myrmidon.api.TaskException; -import org.apache.tools.ant.Task; -import org.apache.tools.ant.types.EnumeratedAttribute; /** * PropertyFile task uses java.util.Properties to modify integer, String and @@ -129,43 +121,33 @@ import org.apache.tools.ant.types.EnumeratedAttribute; * jem@loftinspace.com.au */ public class PropertyFile - extends Task + extends AbstractTask { - private ArrayList entries = new ArrayList(); + private ArrayList m_entries = new ArrayList(); // Use this to prepend a message to the properties file private String m_comment; private Properties m_properties; - private File m_propertyfile; + private File m_file; - public void setComment( String hdr ) + public void setComment( final String comment ) { - m_comment = hdr; + m_comment = comment; } - public void setFile( File file ) + public void setFile( final File file ) { - m_propertyfile = file; + m_file = file; } public Entry createEntry() { - Entry e = new Entry(); - entries.add( e ); - return e; + final Entry entry = new Entry(); + m_entries.add( entry ); + return entry; } - /* - * ======================================================================== - * - * Constructors - */ - /* - * ======================================================================== - * - * Methods - */ public void execute() throws TaskException { @@ -191,7 +173,7 @@ public class PropertyFile private void checkParameters() throws TaskException { - if( !checkParam( m_propertyfile ) ) + if( !checkParam( m_file ) ) { throw new TaskException( "file token must not be null." ); } @@ -200,7 +182,7 @@ public class PropertyFile private void executeOperation() throws TaskException { - for( Iterator e = entries.iterator(); e.hasNext(); ) + for( Iterator e = m_entries.iterator(); e.hasNext(); ) { Entry entry = (Entry)e.next(); entry.executeOn( m_properties ); @@ -214,13 +196,13 @@ public class PropertyFile m_properties = new Properties(); try { - if( m_propertyfile.exists() ) + if( m_file.exists() ) { - getLogger().info( "Updating property file: " + m_propertyfile.getAbsolutePath() ); + getLogger().info( "Updating property file: " + m_file.getAbsolutePath() ); FileInputStream fis = null; try { - fis = new FileInputStream( m_propertyfile ); + fis = new FileInputStream( m_file ); BufferedInputStream bis = new BufferedInputStream( fis ); m_properties.load( bis ); } @@ -235,11 +217,11 @@ public class PropertyFile else { getLogger().info( "Creating new property file: " + - m_propertyfile.getAbsolutePath() ); + m_file.getAbsolutePath() ); FileOutputStream out = null; try { - out = new FileOutputStream( m_propertyfile.getAbsolutePath() ); + out = new FileOutputStream( m_file.getAbsolutePath() ); out.flush(); } finally @@ -263,7 +245,7 @@ public class PropertyFile BufferedOutputStream bos = null; try { - bos = new BufferedOutputStream( new FileOutputStream( m_propertyfile ) ); + bos = new BufferedOutputStream( new FileOutputStream( m_file ) ); // Properties.store is not available in JDK 1.1 Method m = @@ -307,474 +289,4 @@ public class PropertyFile } } } - - /** - * Instance of this class represents nested elements of a task propertyfile. - * - * @author RT - */ - public static class Entry - { - - final static String NOW_VALUE_ = "now"; - final static String NULL_VALUE_ = "never"; - - private final static int DEFAULT_INT_VALUE = 1; - private final static GregorianCalendar - DEFAULT_DATE_VALUE = new GregorianCalendar(); - - private String m_key = null; - private int m_type = Type.STRING_TYPE; - private int m_operation = Operation.EQUALS_OPER; - private String m_value = ""; - private String m_default = null; - private String m_pattern = null; - - public void setDefault( String value ) - { - this.m_default = value; - } - - public void setKey( String value ) - { - this.m_key = value; - } - - public void setOperation( Operation value ) - { - int newOperation = Operation.toOperation( value.getValue() ); - if( newOperation == Operation.NOW_VALUE ) - { - this.m_operation = Operation.EQUALS_OPER; - this.setValue( this.NOW_VALUE_ ); - } - else if( newOperation == Operation.NULL_VALUE ) - { - this.m_operation = Operation.EQUALS_OPER; - this.setValue( this.NULL_VALUE_ ); - } - else - { - this.m_operation = newOperation; - } - } - - public void setPattern( String value ) - { - this.m_pattern = value; - } - - public void setType( Type value ) - { - this.m_type = Type.toType( value.getValue() ); - } - - public void setValue( String value ) - { - this.m_value = value; - } - - protected void executeOn( Properties props ) - throws TaskException - { - checkParameters(); - - // m_type may be null because it wasn't set - try - { - if( m_type == Type.INTEGER_TYPE ) - { - executeInteger( (String)props.get( m_key ) ); - } - else if( m_type == Type.DATE_TYPE ) - { - executeDate( (String)props.get( m_key ) ); - } - else if( m_type == Type.STRING_TYPE ) - { - executeString( (String)props.get( m_key ) ); - } - else - { - throw new TaskException( "Unknown operation type: " + m_type + "" ); - } - } - catch( NullPointerException npe ) - { - // Default to string type - // which means do nothing - npe.printStackTrace(); - } - // Insert as a string by default - props.put( m_key, m_value ); - - } - - /** - * Check if parameter combinations can be supported - * - * @exception TaskException Description of Exception - */ - private void checkParameters() - throws TaskException - { - if( m_type == Type.STRING_TYPE && - m_operation == Operation.DECREMENT_OPER ) - { - throw new TaskException( "- is not suported for string properties (key:" + m_key + ")" ); - } - if( m_value == null && m_default == null ) - { - throw new TaskException( "value and/or default must be specified (key:" + m_key + ")" ); - } - if( m_key == null ) - { - throw new TaskException( "key is mandatory" ); - } - if( m_type == Type.STRING_TYPE && - m_pattern != null ) - { - throw new TaskException( "pattern is not suported for string properties (key:" + m_key + ")" ); - } - } - - /** - * Handle operations for type date. - * - * @param oldValue the current value read from the property file or - * null if the key was not contained in - * the property file. - * @exception TaskException Description of Exception - */ - private void executeDate( String oldValue ) - throws TaskException - { - GregorianCalendar value = new GregorianCalendar(); - GregorianCalendar newValue = new GregorianCalendar(); - - if( m_pattern == null ) - m_pattern = "yyyy/MM/dd HH:mm"; - DateFormat fmt = new SimpleDateFormat( m_pattern ); - - // special case - if( m_default != null && - NOW_VALUE_.equals( m_default.toLowerCase() ) && - ( m_operation == Operation.INCREMENT_OPER || - m_operation == Operation.DECREMENT_OPER ) ) - { - oldValue = null; - } - - if( oldValue != null ) - { - try - { - value.setTime( fmt.parse( oldValue ) ); - } - catch( ParseException pe ) - { - /* - * swollow - */ - } - } - - if( m_value != null ) - { - if( NOW_VALUE_.equals( m_value.toLowerCase() ) ) - { - value.setTime( new Date() ); - } - else if( NULL_VALUE_.equals( m_value.toLowerCase() ) ) - { - value = null; - } - else - { - try - { - value.setTime( fmt.parse( m_value ) ); - } - catch( Exception ex ) - { - // obviously not a date, try a simple int - try - { - int offset = Integer.parseInt( m_value ); - value.clear(); - value.set( Calendar.DAY_OF_YEAR, offset ); - } - catch( Exception ex_ ) - { - value.clear(); - value.set( Calendar.DAY_OF_YEAR, 1 ); - } - } - - } - } - - if( m_default != null && oldValue == null ) - { - if( NOW_VALUE_.equals( m_default.toLowerCase() ) ) - { - value.setTime( new Date() ); - } - else if( NULL_VALUE_.equals( m_default.toLowerCase() ) ) - { - value = null; - } - else - { - try - { - value.setTime( fmt.parse( m_default ) ); - } - catch( ParseException pe ) - { - /* - * swollow - */ - } - } - } - - if( m_operation == Operation.EQUALS_OPER ) - { - newValue = value; - } - else if( m_operation == Operation.INCREMENT_OPER ) - { - newValue.add( Calendar.SECOND, value.get( Calendar.SECOND ) ); - newValue.add( Calendar.MINUTE, value.get( Calendar.MINUTE ) ); - newValue.add( Calendar.HOUR_OF_DAY, value.get( Calendar.HOUR_OF_DAY ) ); - newValue.add( Calendar.DAY_OF_YEAR, value.get( Calendar.DAY_OF_YEAR ) ); - } - else if( m_operation == Operation.DECREMENT_OPER ) - { - newValue.add( Calendar.SECOND, -1 * value.get( Calendar.SECOND ) ); - newValue.add( Calendar.MINUTE, -1 * value.get( Calendar.MINUTE ) ); - newValue.add( Calendar.HOUR_OF_DAY, -1 * value.get( Calendar.HOUR_OF_DAY ) ); - newValue.add( Calendar.DAY_OF_YEAR, -1 * value.get( Calendar.DAY_OF_YEAR ) ); - } - if( newValue != null ) - { - m_value = fmt.format( newValue.getTime() ); - } - else - { - m_value = ""; - } - } - - /** - * Handle operations for type int. - * - * @param oldValue the current value read from the property file or - * null if the key was not contained in - * the property file. - * @exception TaskException Description of Exception - */ - private void executeInteger( String oldValue ) - throws TaskException - { - int value = 0; - int newValue = 0; - - DecimalFormat fmt = ( m_pattern != null ) ? new DecimalFormat( m_pattern ) - : new DecimalFormat(); - - if( oldValue != null ) - { - try - { - value = fmt.parse( oldValue ).intValue(); - } - catch( NumberFormatException nfe ) - { - /* - * swollow - */ - } - catch( ParseException pe ) - { - /* - * swollow - */ - } - } - if( m_value != null ) - { - try - { - value = fmt.parse( m_value ).intValue(); - } - catch( NumberFormatException nfe ) - { - /* - * swollow - */ - } - catch( ParseException pe ) - { - /* - * swollow - */ - } - } - if( m_default != null && oldValue == null ) - { - try - { - value = fmt.parse( m_default ).intValue(); - } - catch( NumberFormatException nfe ) - { - /* - * swollow - */ - } - catch( ParseException pe ) - { - /* - * swollow - */ - } - } - - if( m_operation == Operation.EQUALS_OPER ) - { - newValue = value; - } - else if( m_operation == Operation.INCREMENT_OPER ) - { - newValue = ++value; - } - else if( m_operation == Operation.DECREMENT_OPER ) - { - newValue = --value; - } - m_value = fmt.format( newValue ); - } - - /** - * Handle operations for type string. - * - * @param oldValue the current value read from the property file or - * null if the key was not contained in - * the property file. - * @exception TaskException Description of Exception - */ - private void executeString( String oldValue ) - throws TaskException - { - String value = ""; - String newValue = ""; - - // the order of events is, of course, very important here - // default initially to the old value - if( oldValue != null ) - { - value = oldValue; - } - // but if a value is specified, use it - if( m_value != null ) - { - value = m_value; - } - // even if value is specified, ignore it and set to the default - // value if it is specified and there is no previous value - if( m_default != null && oldValue == null ) - { - value = m_default; - } - - if( m_operation == Operation.EQUALS_OPER ) - { - newValue = value; - } - else if( m_operation == Operation.INCREMENT_OPER ) - { - newValue += value; - } - m_value = newValue; - } - - /** - * Enumerated attribute with the values "+", "-", "=", "now" and - * "never". - * - * @author RT - */ - public static class Operation extends EnumeratedAttribute - { - - // Property type operations - public final static int INCREMENT_OPER = 0; - public final static int DECREMENT_OPER = 1; - public final static int EQUALS_OPER = 2; - - // Special values - public final static int NOW_VALUE = 3; - public final static int NULL_VALUE = 4; - - public static int toOperation( String oper ) - { - if( "+".equals( oper ) ) - { - return INCREMENT_OPER; - } - else if( "-".equals( oper ) ) - { - return DECREMENT_OPER; - } - else if( NOW_VALUE_.equals( oper ) ) - { - return NOW_VALUE; - } - else if( NULL_VALUE_.equals( oper ) ) - { - return NULL_VALUE; - } - return EQUALS_OPER; - } - - public String[] getValues() - { - return new String[]{"+", "-", "=", NOW_VALUE_, NULL_VALUE_}; - } - } - - /** - * Enumerated attribute with the values "int", "date" and "string". - * - * @author RT - */ - public static class Type extends EnumeratedAttribute - { - - // Property types - public final static int INTEGER_TYPE = 0; - public final static int DATE_TYPE = 1; - public final static int STRING_TYPE = 2; - - public static int toType( String type ) - { - if( "int".equals( type ) ) - { - return INTEGER_TYPE; - } - else if( "date".equals( type ) ) - { - return DATE_TYPE; - } - return STRING_TYPE; - } - - public String[] getValues() - { - return new String[]{"int", "date", "string"}; - } - } - } } diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/Entry.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/Entry.java new file mode 100644 index 000000000..138e3d928 --- /dev/null +++ b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/Entry.java @@ -0,0 +1,486 @@ +/* + * Copyright (C) The Apache Software Foundation. All rights reserved. + * + * This software is published under the terms of the Apache Software License + * version 1.1, a copy of which has been included with this distribution in + * the LICENSE.txt file. + */ +package org.apache.tools.ant.taskdefs.optional; + +import java.text.DateFormat; +import java.text.DecimalFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; +import java.util.GregorianCalendar; +import java.util.Properties; +import org.apache.myrmidon.api.TaskException; +import org.apache.tools.ant.types.EnumeratedAttribute; + +/** + * Instance of this class represents nested elements of a task propertyfile. + */ +public class Entry +{ + final static String NOW_VALUE_ = "now"; + final static String NULL_VALUE_ = "never"; + + private final static int DEFAULT_INT_VALUE = 1; + private final static GregorianCalendar + DEFAULT_DATE_VALUE = new GregorianCalendar(); + + private String m_key; + private int m_type = Type.STRING_TYPE; + private int m_operation = Operation.EQUALS_OPER; + private String m_value = ""; + private String m_default; + private String m_pattern; + + public void setDefault( String value ) + { + this.m_default = value; + } + + public void setKey( String value ) + { + this.m_key = value; + } + + public void setOperation( Operation value ) + { + int newOperation = Operation.toOperation( value.getValue() ); + if( newOperation == Operation.NOW_VALUE ) + { + this.m_operation = Operation.EQUALS_OPER; + this.setValue( this.NOW_VALUE_ ); + } + else if( newOperation == Operation.NULL_VALUE ) + { + this.m_operation = Operation.EQUALS_OPER; + this.setValue( this.NULL_VALUE_ ); + } + else + { + this.m_operation = newOperation; + } + } + + public void setPattern( String value ) + { + this.m_pattern = value; + } + + public void setType( Type value ) + { + this.m_type = Type.toType( value.getValue() ); + } + + public void setValue( String value ) + { + this.m_value = value; + } + + protected void executeOn( Properties props ) + throws TaskException + { + checkParameters(); + + // m_type may be null because it wasn't set + try + { + if( m_type == Type.INTEGER_TYPE ) + { + executeInteger( (String)props.get( m_key ) ); + } + else if( m_type == Type.DATE_TYPE ) + { + executeDate( (String)props.get( m_key ) ); + } + else if( m_type == Type.STRING_TYPE ) + { + executeString( (String)props.get( m_key ) ); + } + else + { + throw new TaskException( "Unknown operation type: " + m_type + "" ); + } + } + catch( NullPointerException npe ) + { + // Default to string type + // which means do nothing + npe.printStackTrace(); + } + // Insert as a string by default + props.put( m_key, m_value ); + + } + + /** + * Check if parameter combinations can be supported + * + * @exception TaskException Description of Exception + */ + private void checkParameters() + throws TaskException + { + if( m_type == Type.STRING_TYPE && + m_operation == Operation.DECREMENT_OPER ) + { + throw new TaskException( "- is not suported for string properties (key:" + m_key + ")" ); + } + if( m_value == null && m_default == null ) + { + throw new TaskException( "value and/or default must be specified (key:" + m_key + ")" ); + } + if( m_key == null ) + { + throw new TaskException( "key is mandatory" ); + } + if( m_type == Type.STRING_TYPE && + m_pattern != null ) + { + throw new TaskException( "pattern is not suported for string properties (key:" + m_key + ")" ); + } + } + + /** + * Handle operations for type date. + * + * @param oldValue the current value read from the property file or + * null if the key was not contained in + * the property file. + * @exception TaskException Description of Exception + */ + private void executeDate( String oldValue ) + throws TaskException + { + GregorianCalendar value = new GregorianCalendar(); + GregorianCalendar newValue = new GregorianCalendar(); + + if( m_pattern == null ) + m_pattern = "yyyy/MM/dd HH:mm"; + DateFormat fmt = new SimpleDateFormat( m_pattern ); + + // special case + if( m_default != null && + NOW_VALUE_.equals( m_default.toLowerCase() ) && + ( m_operation == Operation.INCREMENT_OPER || + m_operation == Operation.DECREMENT_OPER ) ) + { + oldValue = null; + } + + if( oldValue != null ) + { + try + { + value.setTime( fmt.parse( oldValue ) ); + } + catch( ParseException pe ) + { + /* + * swollow + */ + } + } + + if( m_value != null ) + { + if( NOW_VALUE_.equals( m_value.toLowerCase() ) ) + { + value.setTime( new Date() ); + } + else if( NULL_VALUE_.equals( m_value.toLowerCase() ) ) + { + value = null; + } + else + { + try + { + value.setTime( fmt.parse( m_value ) ); + } + catch( Exception ex ) + { + // obviously not a date, try a simple int + try + { + int offset = Integer.parseInt( m_value ); + value.clear(); + value.set( Calendar.DAY_OF_YEAR, offset ); + } + catch( Exception ex_ ) + { + value.clear(); + value.set( Calendar.DAY_OF_YEAR, 1 ); + } + } + + } + } + + if( m_default != null && oldValue == null ) + { + if( NOW_VALUE_.equals( m_default.toLowerCase() ) ) + { + value.setTime( new Date() ); + } + else if( NULL_VALUE_.equals( m_default.toLowerCase() ) ) + { + value = null; + } + else + { + try + { + value.setTime( fmt.parse( m_default ) ); + } + catch( ParseException pe ) + { + /* + * swollow + */ + } + } + } + + if( m_operation == Operation.EQUALS_OPER ) + { + newValue = value; + } + else if( m_operation == Operation.INCREMENT_OPER ) + { + newValue.add( Calendar.SECOND, value.get( Calendar.SECOND ) ); + newValue.add( Calendar.MINUTE, value.get( Calendar.MINUTE ) ); + newValue.add( Calendar.HOUR_OF_DAY, value.get( Calendar.HOUR_OF_DAY ) ); + newValue.add( Calendar.DAY_OF_YEAR, value.get( Calendar.DAY_OF_YEAR ) ); + } + else if( m_operation == Operation.DECREMENT_OPER ) + { + newValue.add( Calendar.SECOND, -1 * value.get( Calendar.SECOND ) ); + newValue.add( Calendar.MINUTE, -1 * value.get( Calendar.MINUTE ) ); + newValue.add( Calendar.HOUR_OF_DAY, -1 * value.get( Calendar.HOUR_OF_DAY ) ); + newValue.add( Calendar.DAY_OF_YEAR, -1 * value.get( Calendar.DAY_OF_YEAR ) ); + } + if( newValue != null ) + { + m_value = fmt.format( newValue.getTime() ); + } + else + { + m_value = ""; + } + } + + /** + * Handle operations for type int. + * + * @param oldValue the current value read from the property file or + * null if the key was not contained in + * the property file. + * @exception TaskException Description of Exception + */ + private void executeInteger( String oldValue ) + throws TaskException + { + int value = 0; + int newValue = 0; + + DecimalFormat fmt = ( m_pattern != null ) ? new DecimalFormat( m_pattern ) + : new DecimalFormat(); + + if( oldValue != null ) + { + try + { + value = fmt.parse( oldValue ).intValue(); + } + catch( NumberFormatException nfe ) + { + /* + * swollow + */ + } + catch( ParseException pe ) + { + /* + * swollow + */ + } + } + if( m_value != null ) + { + try + { + value = fmt.parse( m_value ).intValue(); + } + catch( NumberFormatException nfe ) + { + /* + * swollow + */ + } + catch( ParseException pe ) + { + /* + * swollow + */ + } + } + if( m_default != null && oldValue == null ) + { + try + { + value = fmt.parse( m_default ).intValue(); + } + catch( NumberFormatException nfe ) + { + /* + * swollow + */ + } + catch( ParseException pe ) + { + /* + * swollow + */ + } + } + + if( m_operation == Operation.EQUALS_OPER ) + { + newValue = value; + } + else if( m_operation == Operation.INCREMENT_OPER ) + { + newValue = ++value; + } + else if( m_operation == Operation.DECREMENT_OPER ) + { + newValue = --value; + } + m_value = fmt.format( newValue ); + } + + /** + * Handle operations for type string. + * + * @param oldValue the current value read from the property file or + * null if the key was not contained in + * the property file. + * @exception TaskException Description of Exception + */ + private void executeString( String oldValue ) + throws TaskException + { + String value = ""; + String newValue = ""; + + // the order of events is, of course, very important here + // default initially to the old value + if( oldValue != null ) + { + value = oldValue; + } + // but if a value is specified, use it + if( m_value != null ) + { + value = m_value; + } + // even if value is specified, ignore it and set to the default + // value if it is specified and there is no previous value + if( m_default != null && oldValue == null ) + { + value = m_default; + } + + if( m_operation == Operation.EQUALS_OPER ) + { + newValue = value; + } + else if( m_operation == Operation.INCREMENT_OPER ) + { + newValue += value; + } + m_value = newValue; + } + + /** + * Enumerated attribute with the values "+", "-", "=", "now" and + * "never". + * + * @author RT + */ + public static class Operation extends EnumeratedAttribute + { + + // Property type operations + public final static int INCREMENT_OPER = 0; + public final static int DECREMENT_OPER = 1; + public final static int EQUALS_OPER = 2; + + // Special values + public final static int NOW_VALUE = 3; + public final static int NULL_VALUE = 4; + + public static int toOperation( String oper ) + { + if( "+".equals( oper ) ) + { + return INCREMENT_OPER; + } + else if( "-".equals( oper ) ) + { + return DECREMENT_OPER; + } + else if( NOW_VALUE_.equals( oper ) ) + { + return NOW_VALUE; + } + else if( NULL_VALUE_.equals( oper ) ) + { + return NULL_VALUE; + } + return EQUALS_OPER; + } + + public String[] getValues() + { + return new String[]{"+", "-", "=", NOW_VALUE_, NULL_VALUE_}; + } + } + + /** + * Enumerated attribute with the values "int", "date" and "string". + * + * @author RT + */ + public static class Type extends EnumeratedAttribute + { + + // Property types + public final static int INTEGER_TYPE = 0; + public final static int DATE_TYPE = 1; + public final static int STRING_TYPE = 2; + + public static int toType( String type ) + { + if( "int".equals( type ) ) + { + return INTEGER_TYPE; + } + else if( "date".equals( type ) ) + { + return DATE_TYPE; + } + return STRING_TYPE; + } + + public String[] getValues() + { + return new String[]{"int", "date", "string"}; + } + } +} diff --git a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/PropertyFile.java b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/PropertyFile.java index e77721cb8..6cbb7614c 100644 --- a/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/PropertyFile.java +++ b/proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/optional/PropertyFile.java @@ -16,19 +16,11 @@ import java.io.IOException; import java.io.OutputStream; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; -import java.text.DateFormat; -import java.text.DecimalFormat; -import java.text.ParseException; -import java.text.SimpleDateFormat; import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.GregorianCalendar; import java.util.Iterator; import java.util.Properties; +import org.apache.myrmidon.api.AbstractTask; import org.apache.myrmidon.api.TaskException; -import org.apache.tools.ant.Task; -import org.apache.tools.ant.types.EnumeratedAttribute; /** * PropertyFile task uses java.util.Properties to modify integer, String and @@ -129,43 +121,33 @@ import org.apache.tools.ant.types.EnumeratedAttribute; * jem@loftinspace.com.au */ public class PropertyFile - extends Task + extends AbstractTask { - private ArrayList entries = new ArrayList(); + private ArrayList m_entries = new ArrayList(); // Use this to prepend a message to the properties file private String m_comment; private Properties m_properties; - private File m_propertyfile; + private File m_file; - public void setComment( String hdr ) + public void setComment( final String comment ) { - m_comment = hdr; + m_comment = comment; } - public void setFile( File file ) + public void setFile( final File file ) { - m_propertyfile = file; + m_file = file; } public Entry createEntry() { - Entry e = new Entry(); - entries.add( e ); - return e; + final Entry entry = new Entry(); + m_entries.add( entry ); + return entry; } - /* - * ======================================================================== - * - * Constructors - */ - /* - * ======================================================================== - * - * Methods - */ public void execute() throws TaskException { @@ -191,7 +173,7 @@ public class PropertyFile private void checkParameters() throws TaskException { - if( !checkParam( m_propertyfile ) ) + if( !checkParam( m_file ) ) { throw new TaskException( "file token must not be null." ); } @@ -200,7 +182,7 @@ public class PropertyFile private void executeOperation() throws TaskException { - for( Iterator e = entries.iterator(); e.hasNext(); ) + for( Iterator e = m_entries.iterator(); e.hasNext(); ) { Entry entry = (Entry)e.next(); entry.executeOn( m_properties ); @@ -214,13 +196,13 @@ public class PropertyFile m_properties = new Properties(); try { - if( m_propertyfile.exists() ) + if( m_file.exists() ) { - getLogger().info( "Updating property file: " + m_propertyfile.getAbsolutePath() ); + getLogger().info( "Updating property file: " + m_file.getAbsolutePath() ); FileInputStream fis = null; try { - fis = new FileInputStream( m_propertyfile ); + fis = new FileInputStream( m_file ); BufferedInputStream bis = new BufferedInputStream( fis ); m_properties.load( bis ); } @@ -235,11 +217,11 @@ public class PropertyFile else { getLogger().info( "Creating new property file: " + - m_propertyfile.getAbsolutePath() ); + m_file.getAbsolutePath() ); FileOutputStream out = null; try { - out = new FileOutputStream( m_propertyfile.getAbsolutePath() ); + out = new FileOutputStream( m_file.getAbsolutePath() ); out.flush(); } finally @@ -263,7 +245,7 @@ public class PropertyFile BufferedOutputStream bos = null; try { - bos = new BufferedOutputStream( new FileOutputStream( m_propertyfile ) ); + bos = new BufferedOutputStream( new FileOutputStream( m_file ) ); // Properties.store is not available in JDK 1.1 Method m = @@ -307,474 +289,4 @@ public class PropertyFile } } } - - /** - * Instance of this class represents nested elements of a task propertyfile. - * - * @author RT - */ - public static class Entry - { - - final static String NOW_VALUE_ = "now"; - final static String NULL_VALUE_ = "never"; - - private final static int DEFAULT_INT_VALUE = 1; - private final static GregorianCalendar - DEFAULT_DATE_VALUE = new GregorianCalendar(); - - private String m_key = null; - private int m_type = Type.STRING_TYPE; - private int m_operation = Operation.EQUALS_OPER; - private String m_value = ""; - private String m_default = null; - private String m_pattern = null; - - public void setDefault( String value ) - { - this.m_default = value; - } - - public void setKey( String value ) - { - this.m_key = value; - } - - public void setOperation( Operation value ) - { - int newOperation = Operation.toOperation( value.getValue() ); - if( newOperation == Operation.NOW_VALUE ) - { - this.m_operation = Operation.EQUALS_OPER; - this.setValue( this.NOW_VALUE_ ); - } - else if( newOperation == Operation.NULL_VALUE ) - { - this.m_operation = Operation.EQUALS_OPER; - this.setValue( this.NULL_VALUE_ ); - } - else - { - this.m_operation = newOperation; - } - } - - public void setPattern( String value ) - { - this.m_pattern = value; - } - - public void setType( Type value ) - { - this.m_type = Type.toType( value.getValue() ); - } - - public void setValue( String value ) - { - this.m_value = value; - } - - protected void executeOn( Properties props ) - throws TaskException - { - checkParameters(); - - // m_type may be null because it wasn't set - try - { - if( m_type == Type.INTEGER_TYPE ) - { - executeInteger( (String)props.get( m_key ) ); - } - else if( m_type == Type.DATE_TYPE ) - { - executeDate( (String)props.get( m_key ) ); - } - else if( m_type == Type.STRING_TYPE ) - { - executeString( (String)props.get( m_key ) ); - } - else - { - throw new TaskException( "Unknown operation type: " + m_type + "" ); - } - } - catch( NullPointerException npe ) - { - // Default to string type - // which means do nothing - npe.printStackTrace(); - } - // Insert as a string by default - props.put( m_key, m_value ); - - } - - /** - * Check if parameter combinations can be supported - * - * @exception TaskException Description of Exception - */ - private void checkParameters() - throws TaskException - { - if( m_type == Type.STRING_TYPE && - m_operation == Operation.DECREMENT_OPER ) - { - throw new TaskException( "- is not suported for string properties (key:" + m_key + ")" ); - } - if( m_value == null && m_default == null ) - { - throw new TaskException( "value and/or default must be specified (key:" + m_key + ")" ); - } - if( m_key == null ) - { - throw new TaskException( "key is mandatory" ); - } - if( m_type == Type.STRING_TYPE && - m_pattern != null ) - { - throw new TaskException( "pattern is not suported for string properties (key:" + m_key + ")" ); - } - } - - /** - * Handle operations for type date. - * - * @param oldValue the current value read from the property file or - * null if the key was not contained in - * the property file. - * @exception TaskException Description of Exception - */ - private void executeDate( String oldValue ) - throws TaskException - { - GregorianCalendar value = new GregorianCalendar(); - GregorianCalendar newValue = new GregorianCalendar(); - - if( m_pattern == null ) - m_pattern = "yyyy/MM/dd HH:mm"; - DateFormat fmt = new SimpleDateFormat( m_pattern ); - - // special case - if( m_default != null && - NOW_VALUE_.equals( m_default.toLowerCase() ) && - ( m_operation == Operation.INCREMENT_OPER || - m_operation == Operation.DECREMENT_OPER ) ) - { - oldValue = null; - } - - if( oldValue != null ) - { - try - { - value.setTime( fmt.parse( oldValue ) ); - } - catch( ParseException pe ) - { - /* - * swollow - */ - } - } - - if( m_value != null ) - { - if( NOW_VALUE_.equals( m_value.toLowerCase() ) ) - { - value.setTime( new Date() ); - } - else if( NULL_VALUE_.equals( m_value.toLowerCase() ) ) - { - value = null; - } - else - { - try - { - value.setTime( fmt.parse( m_value ) ); - } - catch( Exception ex ) - { - // obviously not a date, try a simple int - try - { - int offset = Integer.parseInt( m_value ); - value.clear(); - value.set( Calendar.DAY_OF_YEAR, offset ); - } - catch( Exception ex_ ) - { - value.clear(); - value.set( Calendar.DAY_OF_YEAR, 1 ); - } - } - - } - } - - if( m_default != null && oldValue == null ) - { - if( NOW_VALUE_.equals( m_default.toLowerCase() ) ) - { - value.setTime( new Date() ); - } - else if( NULL_VALUE_.equals( m_default.toLowerCase() ) ) - { - value = null; - } - else - { - try - { - value.setTime( fmt.parse( m_default ) ); - } - catch( ParseException pe ) - { - /* - * swollow - */ - } - } - } - - if( m_operation == Operation.EQUALS_OPER ) - { - newValue = value; - } - else if( m_operation == Operation.INCREMENT_OPER ) - { - newValue.add( Calendar.SECOND, value.get( Calendar.SECOND ) ); - newValue.add( Calendar.MINUTE, value.get( Calendar.MINUTE ) ); - newValue.add( Calendar.HOUR_OF_DAY, value.get( Calendar.HOUR_OF_DAY ) ); - newValue.add( Calendar.DAY_OF_YEAR, value.get( Calendar.DAY_OF_YEAR ) ); - } - else if( m_operation == Operation.DECREMENT_OPER ) - { - newValue.add( Calendar.SECOND, -1 * value.get( Calendar.SECOND ) ); - newValue.add( Calendar.MINUTE, -1 * value.get( Calendar.MINUTE ) ); - newValue.add( Calendar.HOUR_OF_DAY, -1 * value.get( Calendar.HOUR_OF_DAY ) ); - newValue.add( Calendar.DAY_OF_YEAR, -1 * value.get( Calendar.DAY_OF_YEAR ) ); - } - if( newValue != null ) - { - m_value = fmt.format( newValue.getTime() ); - } - else - { - m_value = ""; - } - } - - /** - * Handle operations for type int. - * - * @param oldValue the current value read from the property file or - * null if the key was not contained in - * the property file. - * @exception TaskException Description of Exception - */ - private void executeInteger( String oldValue ) - throws TaskException - { - int value = 0; - int newValue = 0; - - DecimalFormat fmt = ( m_pattern != null ) ? new DecimalFormat( m_pattern ) - : new DecimalFormat(); - - if( oldValue != null ) - { - try - { - value = fmt.parse( oldValue ).intValue(); - } - catch( NumberFormatException nfe ) - { - /* - * swollow - */ - } - catch( ParseException pe ) - { - /* - * swollow - */ - } - } - if( m_value != null ) - { - try - { - value = fmt.parse( m_value ).intValue(); - } - catch( NumberFormatException nfe ) - { - /* - * swollow - */ - } - catch( ParseException pe ) - { - /* - * swollow - */ - } - } - if( m_default != null && oldValue == null ) - { - try - { - value = fmt.parse( m_default ).intValue(); - } - catch( NumberFormatException nfe ) - { - /* - * swollow - */ - } - catch( ParseException pe ) - { - /* - * swollow - */ - } - } - - if( m_operation == Operation.EQUALS_OPER ) - { - newValue = value; - } - else if( m_operation == Operation.INCREMENT_OPER ) - { - newValue = ++value; - } - else if( m_operation == Operation.DECREMENT_OPER ) - { - newValue = --value; - } - m_value = fmt.format( newValue ); - } - - /** - * Handle operations for type string. - * - * @param oldValue the current value read from the property file or - * null if the key was not contained in - * the property file. - * @exception TaskException Description of Exception - */ - private void executeString( String oldValue ) - throws TaskException - { - String value = ""; - String newValue = ""; - - // the order of events is, of course, very important here - // default initially to the old value - if( oldValue != null ) - { - value = oldValue; - } - // but if a value is specified, use it - if( m_value != null ) - { - value = m_value; - } - // even if value is specified, ignore it and set to the default - // value if it is specified and there is no previous value - if( m_default != null && oldValue == null ) - { - value = m_default; - } - - if( m_operation == Operation.EQUALS_OPER ) - { - newValue = value; - } - else if( m_operation == Operation.INCREMENT_OPER ) - { - newValue += value; - } - m_value = newValue; - } - - /** - * Enumerated attribute with the values "+", "-", "=", "now" and - * "never". - * - * @author RT - */ - public static class Operation extends EnumeratedAttribute - { - - // Property type operations - public final static int INCREMENT_OPER = 0; - public final static int DECREMENT_OPER = 1; - public final static int EQUALS_OPER = 2; - - // Special values - public final static int NOW_VALUE = 3; - public final static int NULL_VALUE = 4; - - public static int toOperation( String oper ) - { - if( "+".equals( oper ) ) - { - return INCREMENT_OPER; - } - else if( "-".equals( oper ) ) - { - return DECREMENT_OPER; - } - else if( NOW_VALUE_.equals( oper ) ) - { - return NOW_VALUE; - } - else if( NULL_VALUE_.equals( oper ) ) - { - return NULL_VALUE; - } - return EQUALS_OPER; - } - - public String[] getValues() - { - return new String[]{"+", "-", "=", NOW_VALUE_, NULL_VALUE_}; - } - } - - /** - * Enumerated attribute with the values "int", "date" and "string". - * - * @author RT - */ - public static class Type extends EnumeratedAttribute - { - - // Property types - public final static int INTEGER_TYPE = 0; - public final static int DATE_TYPE = 1; - public final static int STRING_TYPE = 2; - - public static int toType( String type ) - { - if( "int".equals( type ) ) - { - return INTEGER_TYPE; - } - else if( "date".equals( type ) ) - { - return DATE_TYPE; - } - return STRING_TYPE; - } - - public String[] getValues() - { - return new String[]{"int", "date", "string"}; - } - } - } }