package ch.elexis.core.data.service; import java.util.List; import java.util.UUID; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import ch.elexis.core.common.ElexisEvent; import ch.elexis.core.common.ElexisEventTopics; import ch.elexis.core.data.activator.CoreHub; import ch.elexis.core.data.service.internal.StockCommissioningSystemDriverFactories; import ch.elexis.core.model.IStock; import ch.elexis.core.model.IStockEntry; import ch.elexis.core.model.stock.ICommissioningSystemDriver; import ch.elexis.core.services.IStockCommissioningSystemService; import ch.elexis.data.StockEntry; /** * A service for performing article outlays via a stock management system. This implementation * currently one sends the respective events to the Elexis server, which handles the connection to * the stock management system. */ public class StockCommissioningSystemService implements IStockCommissioningSystemService { @Override public List<UUID> listAllAvailableDrivers(){ return StockCommissioningSystemDriverFactories.getAllDriverUuids(); } @Override public String getInfoStringForDriver(UUID driverUuid, boolean extended){ return StockCommissioningSystemDriverFactories.getInfoStringForDriver(driverUuid, extended); } @Override public IStatus initializeStockCommissioningSystem(IStock stock){ return Status.OK_STATUS; } @Override public IStatus performArticleOutlay(IStockEntry stockEntry, int quantity, Object data){ StockEntry se = (StockEntry) stockEntry; if (se == null) { return new Status(Status.ERROR, CoreHub.PLUGIN_ID, "stock entry is null"); } ElexisEvent performOutlayEvent = new ElexisEvent(); performOutlayEvent.setTopic(ElexisEventTopics.STOCK_COMMISSIONING_OUTLAY); performOutlayEvent.getProperties() .put(ElexisEventTopics.STOCK_COMMISSIONING_PROPKEY_STOCKENTRY_ID, se.getId()); performOutlayEvent.getProperties().put( ElexisEventTopics.STOCK_COMMISSIONING_PROPKEY_QUANTITY, Integer.toString(quantity)); return CoreHub.getElexisServerEventService().postEvent(performOutlayEvent); } @Override public ICommissioningSystemDriver getDriverInstanceForStock(IStock stock){ return null; } @Override public IStatus synchronizeInventory(IStock stock, List<String> articleIds, Object data){ ElexisEvent synchronizeEvent = new ElexisEvent(); synchronizeEvent.setTopic(ElexisEventTopics.STOCK_COMMISSIONING_SYNC_STOCK); synchronizeEvent.getProperties() .put(ElexisEventTopics.STOCK_COMMISSIONING_PROPKEY_STOCK_ID, stock.getId()); // TODO enable transfer of list return CoreHub.getElexisServerEventService().postEvent(synchronizeEvent); } @Override public IStatus initializeInstancesUsingDriver(UUID driver){ return Status.OK_STATUS; } @Override public IStatus shutdownInstancesUsingDriver(UUID driver){ return Status.OK_STATUS; } @Override public IStatus shutdownStockCommissioningSytem(IStock stock){ return Status.OK_STATUS; } }