diff --git a/src/main/java/no/bioforsk/vips/logic/controller/servlet/ForecastConfigurationController.java b/src/main/java/no/bioforsk/vips/logic/controller/servlet/ForecastConfigurationController.java index f4f2cd2e4eaaea27a0841df3e3a110540f244fa3..8749985bb2efd4d8f0f82236ff5a0da590405e2e 100644 --- a/src/main/java/no/bioforsk/vips/logic/controller/servlet/ForecastConfigurationController.java +++ b/src/main/java/no/bioforsk/vips/logic/controller/servlet/ForecastConfigurationController.java @@ -35,7 +35,6 @@ import no.bioforsk.vips.logic.controller.session.ForecastBean; import no.bioforsk.vips.logic.controller.session.UserBean; import no.bioforsk.vips.logic.entity.ForecastConfiguration; import no.bioforsk.vips.logic.entity.ModelInformation; -import no.bioforsk.vips.logic.entity.Organism; import no.bioforsk.vips.logic.entity.Organization; import no.bioforsk.vips.logic.entity.VipsLogicRole; import no.bioforsk.vips.logic.entity.VipsLogicUser; @@ -176,7 +175,8 @@ public class ForecastConfigurationController extends HttpServlet { } request.setAttribute("forecastConfiguration", forecastConfiguration); // All organisms used for parent organism list - request.setAttribute("allOrganisms", em.createNamedQuery("Organism.findAll").getResultList()); + request.setAttribute("allCrops", em.createNamedQuery("Organism.findAllCrops").getResultList()); + request.setAttribute("allPests", em.createNamedQuery("Organism.findAllPests").getResultList()); // Hierarchy categories request.setAttribute("hierarchyCategories", SessionControllerGetter.getOrganismBean().getHierarchyCategoryNames(SessionLocaleUtil.getCurrentLocale(request))); request.setAttribute("modelInformations", em.createNamedQuery("ModelInformation.findAll").getResultList()); diff --git a/src/main/java/no/bioforsk/vips/logic/controller/servlet/OrganismController.java b/src/main/java/no/bioforsk/vips/logic/controller/servlet/OrganismController.java index 4985a3d99090a3259ebac8dc509f45b60a9d64a1..73fd6e60cbceb69ba2a6a7c9e227aef973bc71df 100644 --- a/src/main/java/no/bioforsk/vips/logic/controller/servlet/OrganismController.java +++ b/src/main/java/no/bioforsk/vips/logic/controller/servlet/OrganismController.java @@ -194,6 +194,8 @@ public class OrganismController extends HttpServlet { FormValidation formValidation = FormValidator.validateForm("organismForm",request,getServletContext()); if(formValidation.isValid()) { + organism.setIsCrop(formValidation.getFormField("isCrop").getWebValue() != null); + organism.setIsPest(formValidation.getFormField("isPest").getWebValue() != null); organism.setLatinName(formValidation.getFormField("latinName").getWebValue()); organism.setTradeName(formValidation.getFormField("tradeName").getWebValue()); organism.setHierarchyCategoryId(formValidation.getFormField("hierarchyCategoryId").getValueAsInteger()); diff --git a/src/main/java/no/bioforsk/vips/logic/entity/Organism.java b/src/main/java/no/bioforsk/vips/logic/entity/Organism.java index 8c1c4752e002ff87af6fd9842e7f56ffa51cb9bc..2be85aff4684dd716f91d58b5476b8a2af47b8e3 100644 --- a/src/main/java/no/bioforsk/vips/logic/entity/Organism.java +++ b/src/main/java/no/bioforsk/vips/logic/entity/Organism.java @@ -48,6 +48,8 @@ import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement @NamedQueries({ @NamedQuery(name = "Organism.findAll", query = "SELECT o FROM Organism o"), + @NamedQuery(name = "Organism.findAllCrops", query = "SELECT o FROM Organism o WHERE o.isCrop = true AND o.logicallyDeleted = false"), + @NamedQuery(name = "Organism.findAllPests", query = "SELECT o FROM Organism o WHERE o.isPest = true AND o.logicallyDeleted = false"), @NamedQuery(name = "Organism.findByOrganismId", query = "SELECT o FROM Organism o WHERE o.organismId = :organismId"), @NamedQuery(name = "Organism.findByParentOrganismId", query = "SELECT o FROM Organism o WHERE o.parentOrganismId = :parentOrganismId"), @NamedQuery(name = "Organism.findByLatinName", query = "SELECT o FROM Organism o WHERE o.latinName = :latinName"), @@ -70,6 +72,10 @@ public class Organism implements Serializable { @NotNull @Column(name = "logically_deleted") private boolean logicallyDeleted; + @Column(name = "is_pest") + private Boolean isPest; + @Column(name = "is_crop") + private Boolean isCrop; // We simplify this to avoid very large queries @Column(name = "parent_organism_id") @@ -284,4 +290,32 @@ public class Organism implements Serializable { } return null; } + + /** + * @return the isPest + */ + public Boolean getIsPest() { + return isPest; + } + + /** + * @param isPest the isPest to set + */ + public void setIsPest(Boolean isPest) { + this.isPest = isPest; + } + + /** + * @return the isCrop + */ + public Boolean getIsCrop() { + return isCrop; + } + + /** + * @param isCrop the isCrop to set + */ + public void setIsCrop(boolean isCrop) { + this.isCrop = isCrop; + } } diff --git a/src/main/resources/no/bioforsk/vips/logic/i18n/vipslogictexts.properties b/src/main/resources/no/bioforsk/vips/logic/i18n/vipslogictexts.properties index 8aaedac438ceee06b4a841c7d284e88f66cc1a62..df64481657b646025813929798a57d85a60d4eb1 100644 --- a/src/main/resources/no/bioforsk/vips/logic/i18n/vipslogictexts.properties +++ b/src/main/resources/no/bioforsk/vips/logic/i18n/vipslogictexts.properties @@ -257,3 +257,5 @@ pestOrganismId=Pest weatherForecastProvider=Weather forecast service none=None allOrganizations=All organizations +isPest=Is pest +isCrop=Is crop diff --git a/src/main/resources/no/bioforsk/vips/logic/i18n/vipslogictexts_bs.properties b/src/main/resources/no/bioforsk/vips/logic/i18n/vipslogictexts_bs.properties index 6e86aab547820035cdacdfdb79dc327573b441c7..88f31f84eeda797d799688f367b7d9f848d3d57e 100644 --- a/src/main/resources/no/bioforsk/vips/logic/i18n/vipslogictexts_bs.properties +++ b/src/main/resources/no/bioforsk/vips/logic/i18n/vipslogictexts_bs.properties @@ -257,3 +257,5 @@ pestOrganismId=Pest weatherForecastProvider=Weather forecast service none=None allOrganizations=All organizations +isPest=Is pest +isCrop=Is crop diff --git a/src/main/resources/no/bioforsk/vips/logic/i18n/vipslogictexts_hr.properties b/src/main/resources/no/bioforsk/vips/logic/i18n/vipslogictexts_hr.properties index 2881afe36d361ce65feeceb15cfb32059e00c83a..d93a47030ed0c6212ae1fe4efd8823bdcd52b40c 100644 --- a/src/main/resources/no/bioforsk/vips/logic/i18n/vipslogictexts_hr.properties +++ b/src/main/resources/no/bioforsk/vips/logic/i18n/vipslogictexts_hr.properties @@ -256,3 +256,5 @@ pestOrganismId=Pest weatherForecastProvider=Weather forecast service none=None allOrganizations=All organizations +isPest=Is pest +isCrop=Is crop diff --git a/src/main/resources/no/bioforsk/vips/logic/i18n/vipslogictexts_nb.properties b/src/main/resources/no/bioforsk/vips/logic/i18n/vipslogictexts_nb.properties index ef3d2a907560a6463d438640f41f33cbdf57924a..9e013aa3a8db4e6d83148fa1e33f8d8ea81678dc 100644 --- a/src/main/resources/no/bioforsk/vips/logic/i18n/vipslogictexts_nb.properties +++ b/src/main/resources/no/bioforsk/vips/logic/i18n/vipslogictexts_nb.properties @@ -257,3 +257,5 @@ pestOrganismId=Skadegj\u00f8rer weatherForecastProvider=V\u00e6rvarslingstjeneste none=Ingen allOrganizations=Alle organisasjoner +isPest=Er skadegj\u00f8rer +isCrop=Er kultur diff --git a/src/main/resources/no/bioforsk/vips/logic/i18n/vipslogictexts_sr.properties b/src/main/resources/no/bioforsk/vips/logic/i18n/vipslogictexts_sr.properties index 731fde487a56087a4f6e09ce3cf81a968a26a332..477293f58b5a3dd63dd3a7a84188c648b1a9b2da 100644 --- a/src/main/resources/no/bioforsk/vips/logic/i18n/vipslogictexts_sr.properties +++ b/src/main/resources/no/bioforsk/vips/logic/i18n/vipslogictexts_sr.properties @@ -257,3 +257,5 @@ pestOrganismId=Pest weatherForecastProvider=Weather forecast service none=None allOrganizations=All organizations +isPest=Is pest +isCrop=Is crop diff --git a/src/main/webapp/formdefinitions/organismForm.json b/src/main/webapp/formdefinitions/organismForm.json index 0b8f805667cfc64a55c43afcd1c986ce38481299..fb21bee29eefde149629de6a31b8d0f0fea6ede1 100644 --- a/src/main/webapp/formdefinitions/organismForm.json +++ b/src/main/webapp/formdefinitions/organismForm.json @@ -30,6 +30,16 @@ "required" : false, "nullValue" : "-1" }, + { + "name" : "isCrop", + "dataType" : "STRING", + "required" : false + }, + { + "name" : "isPest", + "dataType" : "STRING", + "required" : false + }, { "name" : "hierarchyCategoryId", "dataType" : "INTEGER", diff --git a/src/main/webapp/templates/forecastConfigurationForm.ftl b/src/main/webapp/templates/forecastConfigurationForm.ftl index b4c6dad7fadcded654a42ab1c0c2e6f264c412db..6ada37f76310c69a8ca52138391b063503a6c1a4 100644 --- a/src/main/webapp/templates/forecastConfigurationForm.ftl +++ b/src/main/webapp/templates/forecastConfigurationForm.ftl @@ -75,7 +75,7 @@ <label for="cropOrganismId">${i18nBundle.cropOrganismId}</label> <select class="form-control" id="cropOrganismId" name="cropOrganismId" onblur="validateField(this);" onchange="renderModelSpecificFields();"> <option value="-1">${i18nBundle.pleaseSelect} ${i18nBundle.cropOrganismId?lower_case}</option> - <#list allOrganisms?sort_by("latinName") as organism> + <#list allCrops?sort_by("latinName") as organism> <option value="${organism.organismId}" <#if (forecastConfiguration.cropOrganismId?has_content && forecastConfiguration.cropOrganismId.organismId == organism.organismId)> selected="selected" @@ -89,7 +89,7 @@ <label for="pestOrganismId">${i18nBundle.pestOrganismId}</label> <select class="form-control" id="pestOrganismId" name="pestOrganismId" onblur="validateField(this);" onchange="renderModelSpecificFields();"> <option value="-1">${i18nBundle.pleaseSelect} ${i18nBundle.pestOrganismId?lower_case}</option> - <#list allOrganisms?sort_by("latinName") as organism> + <#list allPests?sort_by("latinName") as organism> <option value="${organism.organismId}" <#if (forecastConfiguration.pestOrganismId?has_content && forecastConfiguration.pestOrganismId.organismId == organism.organismId)> selected="selected" diff --git a/src/main/webapp/templates/organismForm.ftl b/src/main/webapp/templates/organismForm.ftl index 4efc6c5829487ad82927b4ed6f8a58040815d570..78bc31f72cb5fd88af2173cd54bf8c6a61555c99 100644 --- a/src/main/webapp/templates/organismForm.ftl +++ b/src/main/webapp/templates/organismForm.ftl @@ -62,6 +62,7 @@ </#list> </select> </div> + <div class="form-group"> <label for="latinName">${i18nBundle.latinName}</label> <input type="text" class="form-control" name="latinName" placeholder="${i18nBundle.latinName}" value="${organism.latinName!""}" onblur="validateField(this);" /> @@ -90,6 +91,20 @@ </#list> </select> </div> + <div class="form-group"> + <div class="checkbox"> + <label> + <input type="checkbox" name="isPest" value="true"<#if (organism.isPest?has_content && organism.isPest == true)> checked="checked"</#if>/> + ${i18nBundle.isPest} + </label> + </div> + <div class="checkbox"> + <label> + <input type="checkbox" name="isCrop" value="true"<#if (organism.isCrop?has_content && organism.isCrop == true)> checked="checked"</#if>/> + ${i18nBundle.isCrop} + </label> + </div> + </div> <fieldset> <h3>${i18nBundle.externalResources}</h3> <#if organism.organismExternalResourceSet?has_content> @@ -111,5 +126,6 @@ <button type="submit" class="btn btn-default">${i18nBundle.submit}</button> <a href="/organism?action=listChildOrganisms&organismId=${organism.parentOrganismId!"null"}" class="btn btn-default" role="button">${i18nBundle.cancel}</a> </form> + </#macro> <@page_html/>