package je7hb.intro.xentracker.control;
import je7hb.intro.xentracker.entity.Project;
import je7hb.intro.xentracker.entity.Task;
import javax.json.stream.JsonGenerator;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
/**
* The type ProjectHelper
*
* @author Peter Pilgrim
*/
public class ProjectHelper {
static SimpleDateFormat FMT =
new SimpleDateFormat("dd-MMM-yyyy");
static SimpleDateFormat FMT2 =
new SimpleDateFormat("yyyy-MM-dd");
public static JsonGenerator generateProjectsAsJson( JsonGenerator generator, List<Project> projects ) {
generator.writeStartArray();
for ( Project project: projects ) {
writeProjectAsJson(generator, project);
}
generator.writeEnd().close();
return generator;
}
public static JsonGenerator writeProjectAsJson( JsonGenerator generator, Project project ) {
generator.writeStartObject()
.write("id", project.getId())
.write("name", project.getName());
if ( project.getHeadline() != null )
generator.write("headline", project.getHeadline());
if ( project.getDescription() != null )
generator.write("description", project.getDescription());
generator.writeStartArray("tasks");
for ( Task task: project.getTasks()) {
writeTaskAsJson(generator,task);
}
generator.writeEnd().writeEnd();
return generator;
}
public static JsonGenerator writeTaskAsJson( JsonGenerator generator, Task task ) {
generator.writeStartObject()
.write("id", task.getId())
.write("name", task.getName())
.write("targetDate",
task.getTargetDate() == null ? "" :
FMT2.format(task.getTargetDate()))
.write("completed", task.isCompleted())
.write("projectId",
task.getProject() != null ? task.getProject().getId() : 0 )
.writeEnd();
return generator;
}
public static boolean convertToBoolean( String value ) {
return convertToBoolean(value, false);
}
public static boolean convertToBoolean( String value, boolean defaultValue ) {
if ( value == null )
return defaultValue;
value = value.trim();
if ( value.length() == 0 )
return defaultValue;
if ( "true".equalsIgnoreCase(value) ||
"yes".equalsIgnoreCase(value) || "1".equalsIgnoreCase(value) )
return true;
if ( "false".equalsIgnoreCase(value) ||
"no".equalsIgnoreCase(value) || "0".equalsIgnoreCase(value) )
return false;
return defaultValue;
}
public static Date convertToDate( String value ) {
if ( value == null )
return null;
value = value.trim();
if ( value.length() == 0 )
return null;
Date date = null;
try {
date = FMT.parse(value);
}
catch (ParseException pe1) {
try {
date = FMT2.parse(value);
}
catch (ParseException pe2) {
throw new RuntimeException(
"unable to parse date ["+value+"]");
}
}
return date;
}
}