package com.qcadoo.mes.materialFlowResources.service; import java.util.Date; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.Assert; import com.qcadoo.mes.basic.constants.BasicConstants; import com.qcadoo.mes.basic.constants.PalletNumberFields; import com.qcadoo.mes.materialFlowResources.constants.MaterialFlowResourcesConstants; import com.qcadoo.mes.materialFlowResources.constants.ResourceFields; import com.qcadoo.model.api.DataDefinition; import com.qcadoo.model.api.DataDefinitionService; import com.qcadoo.model.api.Entity; import com.qcadoo.model.api.search.SearchRestrictions; @Service public class PalletNumberDisposalService { @Autowired private DataDefinitionService dataDefinitionService; private DataDefinition resourceDataDefinition() { return dataDefinitionService.get(MaterialFlowResourcesConstants.PLUGIN_IDENTIFIER, MaterialFlowResourcesConstants.MODEL_RESOURCE); } public void tryToDispose(Entity palletNumber) { if (palletNumber != null) { DataDefinition palletNumberDataDefinition = palletNumber.getDataDefinition(); Assert.isTrue(palletNumberDataDefinition.getPluginIdentifier().equals(BasicConstants.PLUGIN_IDENTIFIER)); Assert.isTrue(palletNumberDataDefinition.getName().equals(BasicConstants.MODEL_PALLET_NUMBER)); if (canDisposePalletNumber(palletNumber)) { palletNumber.setField(PalletNumberFields.ISSUE_DATE_TIME, new Date()); palletNumberDataDefinition.save(palletNumber); } } } private boolean thereAreNoResourcesAssociatedWithGivenPalletNumber(Entity palletNumber) { return resourceDataDefinition().count(SearchRestrictions.belongsTo(ResourceFields.PALLET_NUMBER, palletNumber)) == 0; } private boolean canDisposePalletNumber(Entity palletNumber) { return thereAreNoResourcesAssociatedWithGivenPalletNumber(palletNumber); } }