package calendar;
public class Setting extends CsvStructure{
public static final int TYPE_STRING = 0;
public static final int TYPE_INT = 1;
public static final int TYPE_FLOAT = 2;
public static final int NO_FIELDS = 3;
public static final int IDX_NAME = 0;
public static final int IDX_VALUE = 1;
public static final int IDX_TYPE = 2;
private String m_name;
private String m_value;
private int m_type;
if (m_name.length() > 30) {
throw new StringIndexOutOfBoundsException("The length of " +
"setting name "+m_name+
" is greater than 30 characters, " +
"please edit the settings.csv file to fix this!");
}
return m_name;
}
public boolean SetName(String name) {
if (name.length() > 30) {
throw new StringIndexOutOfBoundsException("The length of " +
"setting name "+name+
" is greater than 30 characters");
}
m_name = name;
return true;
}
public int GetType()
throws NoSuchFieldException {
if ((m_type != Setting.TYPE_STRING) && (m_type != Setting.TYPE_INT)
&& (m_type != Setting.TYPE_FLOAT)) {
throw new NoSuchFieldException("Setting type "+m_type+" does " +
"not exist!");
}
return m_type;
}
if ((type != Setting.TYPE_STRING) && (type != Setting.TYPE_INT)
&& (type != Setting.TYPE_FLOAT)) {
throw new IllegalArgumentException("Type "+type+" is not a " +
"valid type!");
}
m_type = type;
return true;
}
if (m_value.length() > 30) {
throw new StringIndexOutOfBoundsException("The length of " +
"setting value "+m_value+
" is greater than 30 characters, " +
"please edit the settings.csv file to fix this!");
}
return m_value;
}
if(m_type != Setting.TYPE_INT) {
throw new IllegalArgumentException("Setting "+m_name+
" is not of type INT");
}
return new Integer(m_value).intValue();
}
if(m_type != Setting.TYPE_FLOAT) {
throw new IllegalArgumentException("Setting "+m_name+
" is not of type FLOAT(double)");
}
return new Double(m_value).doubleValue();
}
if (value.length() > 30) {
throw new StringIndexOutOfBoundsException("The length of " +
"setting value "+value+
" is greater than 30 characters");
}
if (m_type != Setting.TYPE_STRING) {
throw new IllegalArgumentException("Setting "+m_name+
" is not of type String");
}
m_value = value;
return true;
}
if(m_type != Setting.TYPE_INT) {
throw new IllegalArgumentException("Setting "+m_name+
" is not of type INT");
}
m_value = new Integer(value).toString();
return true;
}
if(m_type != Setting.TYPE_FLOAT) {
throw new IllegalArgumentException("Setting "+m_name+
" is not of type FLOAT(double)");
}
m_value = new Double(value).toString();
return true;
}
m_name = "setting";
m_value = "default";
m_type = Setting.TYPE_STRING;
}
public Setting(String name, String value,
int type) {
m_name = name;
m_value = value;
m_type = type;
}
public Setting(String name, String value) {
m_name = name;
m_value = value;
m_type = Setting.TYPE_STRING;
}
public Setting(String name,
int value) {
m_name = name;
m_value = new Integer(value).toString();
m_type = Setting.TYPE_INT;
}
public Setting(String name,
double value) {
m_name = name;
m_value = new Double(value).toString();
m_type = Setting.TYPE_FLOAT;
}
@Override
String csv = "\""+m_name+"\",\""+m_value+"\","+m_type;
return csv;
}
public static void main(String args[]) {
Setting settingDefault = new Setting();
try {
settingDefault.SetName("Test Setting");
settingDefault.SetName("overflowoverflowoverflowoverflowoverflow");
System.out.println("Fail: String overflow allowed on field Name");
} catch (StringIndexOutOfBoundsException e) {
System.out.println("Pass: " +e.getMessage());
}
try {
settingDefault.SetName("ValidStringLength");
settingDefault.GetName();
System.out.println("Pass: Returned valid String length");
} catch (StringIndexOutOfBoundsException e) {
System.out.println("Fail: "+e);
}
try {
settingDefault.SetType(TYPE_STRING);
settingDefault.GetType();
System.out.println("Pass: Valid type has been set");
} catch (NoSuchFieldException e) {
System.out.println("Fail: "+e.getMessage());
}
try {
settingDefault.SetType(TYPE_INT);
settingDefault.SetValue(55);
settingDefault.GetValueFloat();
System.out.println("Fail: Value should not be of type float.");
} catch (Exception e) {
System.out.println("Pass: "+e.getMessage());
}
try {
settingDefault.SetType(TYPE_FLOAT);
settingDefault.SetValue(55.5);
settingDefault.GetValueInt();
System.out.println("Fail: Value should not be of type int.");
} catch (Exception e) {
System.out.println("Pass: "+e.getMessage());
}
try {
settingDefault.SetType(TYPE_STRING);
settingDefault.SetValue("overflowoverflowoverflowoverflowoverflow");
System.out.println("Fail: Value was allowed to be overflowed");
} catch (StringIndexOutOfBoundsException e) {
System.out.println("Pass: " +e.getMessage());
}
try {
settingDefault.SetType(TYPE_FLOAT);
settingDefault.SetValue("TestName");
System.out.println("Fail: Allowed to set String using " +
"setting type float");
} catch (IllegalArgumentException e) {
System.out.println("Pass: " +e.getMessage());
}
try {
settingDefault.SetType(TYPE_FLOAT);
settingDefault.SetValue(55);
System.out.println("Fail: Setting value of type INT has " +
"been allowed to" +
"be set using setting type float");
} catch (IllegalArgumentException e) {
System.out.println("Pass: "+e.getMessage());
}
try {
settingDefault.SetType(TYPE_INT);
settingDefault.SetValue(55.55);
System.out.println("Fail: Setting of type INT has been " +
"allowed to set value"
+ " to type double");
} catch (IllegalArgumentException e) {
System.out.println("Pass: "+e.getMessage());
}
}
}