package de.aidger.model.models; import static de.aidger.utils.Translation._; import java.text.MessageFormat; import java.util.Calendar; import java.util.List; import siena.Column; import siena.Generator; import siena.Id; import siena.Model; import siena.Query; import siena.Table; import de.aidger.model.validators.ValidationException; import de.aidger.utils.Logger; import de.aidger.utils.history.HistoryEvent; import de.aidger.utils.history.HistoryException; import de.aidger.utils.history.HistoryManager; @Table("Finanzkategorie") public class InternalFinancialCategory extends Model { @Id(Generator.AUTO_INCREMENT) private Long id = null; @Column("Gruppe") private Long group; @Column("Name") private String name; @Column("Plankosten") private Integer budgetCost; @Column("Kostenstelle") private Integer costUnit; @Column("Jahr") private Short year; public InternalFinancialCategory() { } public InternalFinancialCategory(InternalFinancialCategory entry) { this(); setId(entry.getId()); setName(entry.getName()); setBudgetCost(entry.getBudgetCost()); setCostUnit(entry.getCostUnit()); setYear(entry.getYear()); setGroup(entry.getGroup()); } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getBudgetCost() { return budgetCost; } public void setBudgetCost(Integer budgetCost) { this.budgetCost = budgetCost; } public Integer getCostUnit() { return costUnit; } public void setCostUnit(Integer costUnit) { this.costUnit = costUnit; } public Short getYear() { return year; } public void setYear(Short year) { this.year = year; } public Query<InternalFinancialCategory> all() { return (Query<InternalFinancialCategory>) Model.all(this.getClass()); } public Long getGroup() { return group; } public void setGroup(Long group) { this.group = group; } public List<InternalFinancialCategory> getAll() { return all().fetch(); } public void remove() { /* Check if the model is saved in the db */ if (id == null || all().getByKey(id) == null) { return; } Logger.info(MessageFormat.format(_("Removing model: {0}"), toString())); delete(); /* Add event to the HistoryManager */ HistoryEvent evt = new HistoryEvent(); evt.id = getId(); evt.status = HistoryEvent.Status.Removed; evt.type = getClass().getSimpleName(); evt.date = new java.sql.Date(Calendar.getInstance().getTime().getTime()); try { HistoryManager.getInstance().addEvent(evt); } catch (HistoryException ex) { Logger.error(ex.getMessage()); } } public void markAsNew() { this.setId(null); } public void save() { boolean wasNew = getId() == null; super.save(); /* Add event to the HistoryManager */ HistoryEvent evt = new HistoryEvent(); evt.id = getId(); evt.status = wasNew ? HistoryEvent.Status.Added : HistoryEvent.Status.Changed; evt.type = getClass().getSimpleName(); evt.date = new java.sql.Date(Calendar.getInstance().getTime().getTime()); try { HistoryManager.getInstance().addEvent(evt); } catch (HistoryException ex) { Logger.error(ex.getMessage()); } } @Override public String toString() { String ret = getClass().getSimpleName() + " [" + "ID: " + getId() + ", "; try { for (java.lang.reflect.Method m : getClass().getDeclaredMethods()) { if (m.getName().startsWith("get") && !m.getName().equals("getAll") && m.getParameterTypes().length == 0) { ret += m.getName().substring(3) + ": "; ret += m.invoke(this, new Object[0]) + ", "; } } if (ret.endsWith(", ")) { ret = ret.substring(0, ret.length() - 2); } } catch (Exception ex) { Logger.error(ex.getMessage()); } return ret + "]"; } }