package dk.statsbiblioteket.medieplatform.autonomous; import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.Iterator; import java.util.Properties; public class TestingComponent extends AbstractRunnableComponent<Item> { private ArrayList<Item> items; protected TestingComponent(Properties properties) { super(properties); } @Override public String getEventID() { return "Data_Archived"; } @Override public void doWorkOnItem(Item batch, ResultCollector resultCollector) throws Exception { System.out.println("working"); } public EventTrigger<Item> getEventTrigger() { return new EventTrigger<Item>() { @Override public Iterator<Item> getTriggeredItems(Query<Item> query) throws CommunicationException { return items.iterator(); } }; } public EventStorer<Item> getEventStorer() { return new EventStorer<Item>() { @Override public Date appendEventToItem(Item item, String agent, Date timestamp, String details, String eventType, boolean outcome) throws CommunicationException { return addEvent(item.getFullID(), timestamp, details, eventType, outcome); } @Override public Date prependEventToItem(Item item, String agent, Date timestamp, String details, String eventType, boolean outcome) throws CommunicationException { throw new RuntimeException("Not implemented"); } @Override public int removeEventFromItem(Item item, String eventType) throws CommunicationException, NotFoundException { return 0; } private Date addEvent(String fullId, Date timestamp, String details, String eventType, boolean outcome) { for (Item item : items) { if (item.getFullID().equals(fullId)) { Event event = new Event(); event.setDate(timestamp); event.setEventID(eventType); event.setSuccess(outcome); event.setDetails(details); item.getEventList().add(event); } } return new Date(); } @Override public int triggerWorkflowRestartFromFirstFailure(Item item, String eventId) throws CommunicationException, NotFoundException { return 0; } @Override public int triggerWorkflowRestartFromFirstFailure(Item item) throws CommunicationException, NotFoundException { return 0; } }; } public void setItems(ArrayList<Item> items) { this.items = items; } public ArrayList<Item> getItems() { return items; } public Item getItem(String itemFullID) { for (Item item : items) { if (item.getFullID().equals(itemFullID)){ return item; } } return null; } }