/*******************************************************************************
* Copyright 2011 Antti Havanko
*
* This file is part of Motiver.fi.
* Motiver.fi is licensed under one open source license and one commercial license.
*
* Commercial license: This is the appropriate option if you want to use Motiver.fi in
* commercial purposes. Contact license@motiver.fi for licensing options.
*
* Open source license: This is the appropriate option if you are creating an open source
* application with a license compatible with the GNU GPL license v3. Although the GPLv3 has
* many terms, the most important is that you must provide the source code of your application
* to your users so they can be free to modify your application for their own needs.
******************************************************************************/
package com.delect.motiver.server.jdo.nutrition;
import java.util.Date;
import javax.jdo.annotations.IdGeneratorStrategy;
import javax.jdo.annotations.IdentityType;
import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.Persistent;
import javax.jdo.annotations.PrimaryKey;
import com.google.appengine.api.datastore.Key;
import com.google.appengine.api.datastore.KeyFactory;
import com.delect.motiver.shared.GuideValueModel;
@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class GuideValue {
/**
* Converts server object to client side object
* @param model : server side model
* @return Client side model
*/
public static GuideValueModel getClientModel(GuideValue model) {
if(model == null) {
return null;
}
GuideValueModel modelClient = new GuideValueModel(model.getId(), model.getName());
modelClient.setDates(model.getDateStart(), model.getDateEnd());
//training
modelClient.setEnergy(true, model.getEnergy(true));
modelClient.setProtein(true, model.getProtein(true));
modelClient.setCarb(true, model.getCarb(true));
modelClient.setFet(true, model.getFet(true));
//rest
modelClient.setEnergy(false, model.getEnergy(false));
modelClient.setProtein(false, model.getProtein(false));
modelClient.setCarb(false, model.getCarb(false));
modelClient.setFet(false, model.getFet(false));
modelClient.setPercent(model.isPercent());
modelClient.setUid(model.getUid());
return modelClient;
}
/**
* Converts client object to server side object
* @param model : client side model
* @return Server side model
*/
public static GuideValue getServerModel(GuideValueModel model) {
if(model == null) {
return null;
}
GuideValue modelServer = new GuideValue(model.getName());
modelServer.setDates(model.getDateStart(), model.getDateEnd());
modelServer.setId(model.getId());
//training
modelServer.setEnergy(true, model.getEnergy(true));
modelServer.setProtein(true, model.getProtein(true));
modelServer.setCarb(true, model.getCarbs(true));
modelServer.setFet(true, model.getFet(true));
//rest
modelServer.setEnergy(false, model.getEnergy(false));
modelServer.setProtein(false, model.getProtein(false));
modelServer.setCarb(false, model.getCarbs(false));
modelServer.setFet(false, model.getFet(false));
return modelServer;
}
@Persistent
public Long uid;
@Persistent
public String openId;
@Persistent
private Double carbRest;
@Persistent
private Double carbTraining;
@Persistent
private Date dateEnd;
@Persistent
private Date dateStart;
@Persistent
private Double energyRest;
@Persistent
private Double energyTraining;
@Persistent
private Double fetRest;
@Persistent
private Double fetTraining;
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Key id;
/**
* Are values grams (false) or percent (true)
*/
@Persistent
private boolean isPercent = true;
@Persistent
private String name;
@Persistent
private Double proteinRest;
@Persistent
private Double proteinTraining;
public GuideValue() {
}
public GuideValue(String name) {
setName(name);
}
public Double getCarb(boolean training) {
if(training) {
return carbTraining;
}
else {
return carbRest;
}
}
public Date getDateEnd() {
return dateEnd;
}
public Date getDateStart() {
return dateStart;
}
public Double getEnergy(boolean training) {
if(training) {
return energyTraining;
}
else {
return energyRest;
}
}
public Double getFet(boolean training) {
if(training) {
return fetTraining;
}
else {
return fetRest;
}
}
public Long getId() {
if(id != null) {
return id.getId();
}
else {
return 0L;
}
}
public Key getKey() {
return id;
}
public String getName() {
return name;
}
public Double getProtein(boolean training) {
if(training) {
return proteinTraining;
}
else {
return proteinRest;
}
}
public String getUid() {
if(openId != null) {
return openId;
}
else {
return "";
}
}
public Boolean isPercent() {
return isPercent;
}
public void setCarb(boolean training, Double carb) {
if(training) {
carbTraining = carb;
}
else {
carbRest = carb;
}
}
public void setDates(Date dateStart, Date dateEnd) {
this.dateStart = dateStart;
this.dateEnd = dateEnd;
}
public void setEnergy(boolean training, Double energy) {
if(training) {
energyTraining = energy;
}
else {
energyRest = energy;
}
}
public void setFet(boolean training, Double fet) {
if(training) {
fetTraining = fet;
}
else {
fetRest = fet;
}
}
public void setId(Long id) {
Key k = null;
if(id != null && id != 0) {
k = KeyFactory.createKey(GuideValue.class.getSimpleName(), id);
}
this.id = k;
}
public void setName(String name) {
this.name = name;
}
public void setPercent(boolean isPercent) {
this.isPercent = isPercent;
}
public void setProtein(boolean training, Double protein) {
if(training) {
proteinTraining = protein;
}
else {
proteinRest = protein;
}
}
public void setUid(String openId) {
this.openId = openId;
}
public Long getUidOld() {
return uid;
}
}