/*******************************************************************************
* Copyright (c) 2014 MEDEVIT.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* T. Huster - initial API and implementation
*******************************************************************************/
package at.medevit.elexis.inbox.model.impl;
import java.util.HashSet;
import java.util.List;
import at.medevit.elexis.inbox.model.IInboxElementService;
import at.medevit.elexis.inbox.model.IInboxUpdateListener;
import at.medevit.elexis.inbox.model.InboxElement;
import ch.elexis.data.Kontakt;
import ch.elexis.data.Mandant;
import ch.elexis.data.Patient;
import ch.elexis.data.PersistentObject;
import ch.elexis.data.Query;
public class InboxElementService implements IInboxElementService {
HashSet<IInboxUpdateListener> listeners = new HashSet<IInboxUpdateListener>();
@Override
public void createInboxElement(Patient patient, Kontakt mandant, PersistentObject object){
InboxElement element = new InboxElement(patient, mandant, object);
fireUpdate(element);
}
@Override
public void removeUpdateListener(IInboxUpdateListener listener){
synchronized (listeners) {
listeners.remove(listener);
}
}
@Override
public void addUpdateListener(IInboxUpdateListener listener){
synchronized (listeners) {
listeners.add(listener);
}
}
@Override
public List<InboxElement> getInboxElements(Mandant mandant, Patient patient, State state){
Query<InboxElement> qie = new Query<InboxElement>(InboxElement.class);
if (mandant != null) {
qie.add(InboxElement.FLD_MANDANT, "=", mandant.getId());
}
if (patient != null) {
qie.add(InboxElement.FLD_PATIENT, "=", patient.getId());
}
if (state != null) {
qie.add(InboxElement.FLD_STATE, "=", Integer.toString(state.ordinal()));
}
return qie.execute();
}
@Override
public void changeInboxElementState(InboxElement element, State state){
element.set(InboxElement.FLD_STATE, Integer.toString(state.ordinal()));
fireUpdate(element);
}
private void fireUpdate(InboxElement element){
synchronized (listeners) {
for (IInboxUpdateListener listener : listeners) {
listener.update(element);
}
}
}
public void activate(){
System.out.println("active providers");
ElementsProviderExtension.activateAll();
}
public void deactivate(){
System.out.println("deactive providers");
}
}