package com.venky.swf.db.annotations.column.defaulting;
import java.sql.Date;
import java.sql.Timestamp;
import java.util.Calendar;
import java.util.TimeZone;
import com.venky.core.date.DateUtils;
import com.venky.core.util.ObjectUtil;
import com.venky.swf.db.Database;
import com.venky.swf.db.annotations.column.COLUMN_DEF;
import com.venky.swf.db.model.User;
public class StandardDefaulter {
public static Object getDefaultValue(COLUMN_DEF columnDef){
return getDefaultValue(columnDef.value(), columnDef.args());
}
public static Object getDefaultValue(StandardDefault defaultKey){
return getDefaultValue(defaultKey,"");
}
public static Object getDefaultValue(StandardDefault defaultKey,String args){
Object ret = null;
switch (defaultKey){
case NULL:
ret = null;
break;
case ONE:
ret = 1;
break;
case ZERO:
ret = 0;
break;
case CURRENT_USER:
User user = Database.getInstance().getCurrentUser();
ret = user == null ? 1 : user.getId();
break;
case CURRENT_DATE:
{
Date date = new Date(System.currentTimeMillis());
String format = args;
if (!ObjectUtil.isVoid(format)){
ret = DateUtils.getTimestampStr(date, TimeZone.getDefault(), format);
}else {
ret = new Date(DateUtils.getStartOfDay(date).getTime());
}
}
break;
case CURRENT_TIMESTAMP:
{
Timestamp ts = new Timestamp(System.currentTimeMillis());
String format = args;
if (!ObjectUtil.isVoid(format)){
ret = DateUtils.getTimestampStr(ts, TimeZone.getDefault(), format);
}else {
ret = ts;
}
}
break;
case CURRENT_DAY_OF_MONTH:
ret = Calendar.getInstance().get(Calendar.DAY_OF_MONTH);
break;
case CURRENT_MONTH:
ret = Calendar.getInstance().get(Calendar.MONTH);
break;
case CURRENT_YEAR:
ret = Calendar.getInstance().get(Calendar.YEAR);
break;
case BOOLEAN_FALSE:
ret = false;
break;
case BOOLEAN_TRUE:
ret = true;
break;
case SOME_VALUE:
ret = args;
break;
case NONE:
break;
}
return ret;
}
}