/******************************************************************************* * Copyright (c) 2009, A. Kaufmann and Elexis * 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: * A. Kaufmann - initial implementation * *******************************************************************************/ package com.hilotec.elexis.pluginstatistiken.datenquellen; import java.util.LinkedList; import java.util.List; import ch.elexis.data.Fall; import ch.elexis.data.Konsultation; import ch.elexis.data.Kontakt; import ch.elexis.data.Patient; import ch.elexis.data.PersistentObject; import ch.elexis.data.Query; import ch.elexis.data.Verrechnet; import com.hilotec.elexis.pluginstatistiken.schnittstelle.IDatenquelle; import com.hilotec.elexis.pluginstatistiken.schnittstelle.IDatensatz; import com.hilotec.elexis.pluginstatistiken.schnittstelle.ITabelle; /** * Datenquelle fuer die wichtigsten Tabellen aus dem Core. Das koennte man eigentlich in ein eigenes * Fragment auslagern, aber ich will auch nicht das Elexis-Repo fluten. ;-) * * @author Antoine Kaufmann */ public class Core implements IDatenquelle { List<ITabelle> tabellen; /** * Basisklasse fuer all die Core-Tabellen, die direkt auf PersistentObject, aufsetzen. Fuer * diese muss dann keine eigene Klasse geschrieben werden, wenn einfach nur die vom Objekt * gestellten Spalten verfuegbar sein sollen. * * @author Antoine Kaufmann */ private static class CoreTabelle implements ITabelle { Class<?> poClass; String name; /** * Einzelner Datensatz, der direkt aus einem PO besteht. * * @author Antoine Kaufmann */ private static class CoreDatensatz implements IDatensatz { PersistentObject obj; /** * Datensatz erstellen * * @param po * PersistentObject aus dem dieser Datensatz bestehen soll */ public CoreDatensatz(PersistentObject po){ obj = po; } /* * (non-Javadoc) * * @see * com.hilotec.elexis.pluginstatistiken.schnittstelle.IDatensatz#getSpalte(java.lang * .String) */ public String getSpalte(String name){ return obj.get(name); } } /** * Konstruktor fuer eine Core-Tabelle, die rein nur auf PO basiert. * * @param name * Gewuenschter Tabellenname * @param cl * Klasse der Objekte dieser Tabelle */ public CoreTabelle(String name, Class<?> cl){ this.name = name; poClass = cl; } /* * (non-Javadoc) * * @see com.hilotec.elexis.pluginstatistiken.schnittstelle.ITabelle#getDatensaetze() */ @SuppressWarnings("unchecked") public List<IDatensatz> getDatensaetze(){ Query<?> q = new Query(poClass); List<?> pol = q.execute(); List<IDatensatz> datensaetze = new LinkedList<IDatensatz>(); for (Object o : pol) { datensaetze.add(new CoreDatensatz((PersistentObject) o)); } return datensaetze; } /* * (non-Javadoc) * * @see com.hilotec.elexis.pluginstatistiken.schnittstelle.ITabelle#getName() */ public String getName(){ return name; } } /** * Konstruktor */ public Core(){ tabellen = new LinkedList<ITabelle>(); tabellen.add(new CoreTabelle("Patient", Patient.class)); tabellen.add(new CoreTabelle("Fall", Fall.class)); tabellen.add(new CoreTabelle("Konsultation", Konsultation.class)); tabellen.add(new CoreTabelle("Verrechnet", Verrechnet.class)); tabellen.add(new CoreTabelle("Kontakt", Kontakt.class)); } /* * (non-Javadoc) * * @see com.hilotec.elexis.pluginstatistiken.schnittstelle.IDatenquelle#getName() */ public String getName(){ return "Core"; } /* * (non-Javadoc) * * @see com.hilotec.elexis.pluginstatistiken.schnittstelle.IDatenquelle#getTabellen() */ public List<ITabelle> getTabellen(){ return tabellen; } /* * (non-Javadoc) * * @see * com.hilotec.elexis.pluginstatistiken.schnittstelle.IDatenquelle#getTabelle(java.lang.String) */ public ITabelle getTabelle(String name){ for (ITabelle tab : tabellen) { if (tab.getName().equals(name)) { return tab; } } return null; } }