package sh.isaac.api.component.semantic.version.brittle;

import sh.isaac.api.component.semantic.version.SemanticVersion;

public interface BrittleVersion extends SemanticVersion {

	public enum BrittleDataTypes {STRING, NID, INTEGER, FLOAT, BOOLEAN};
	
	/**
	 * Return the type and order of data fields that will be returned by {@link #getDataFields()}
	 * @return
	 */
	public BrittleDataTypes[] getFieldTypes();
	
	/**
	 * Return all data columns in this version, with null padding for blank fields, so that the returned
	 * object array matches in size and type the definition of {@link #getFieldTypes()}
	 * @return
	 */
	public Object[] getDataFields();
}

@@ -114,16 +114,88 @@
 Version;
+%0Aimport sh.isaac.api.component.semantic.version.dynamic.DynamicDataType;
 %0A%0Apublic
@@ -282,46 +282,368 @@
 es %7B
+%0A%09%09
 STRING
-, NID, INTEGER, FLOAT, BOOLEAN%7D;
+(DynamicDataType.STRING), %0A%09%09NID(DynamicDataType.NID), %0A%09%09INTEGER(DynamicDataType.INTEGER), %0A%09%09FLOAT(DynamicDataType.FLOAT), %0A%09%09BOOLEAN(DynamicDataType.BOOLEAN);%0A%09%0A%09%09private DynamicDataType mapTo;%0A%09%09%0A%09%09BrittleDataTypes(DynamicDataType mapTo)%0A%09%09%7B%0A%09%09%09this.mapTo = mapTo;%0A%09%09%7D%0A%09%09%0A%09%09public DynamicDataType getDynamicColumnType()%0A%09%09%7B%0A%09%09%09return mapTo;%0A%09%09%7D%0A%09%7D
 %0A%09%0A%09

add some type mapping information