001 package hep.aida.ref.sql;
002
003 // FreeHEP
004 import org.freehep.util.FreeHEPLookup;
005 import hep.aida.ref.AnalysisFactory;
006
007 // AIDA
008 import hep.aida.ITupleFactory;
009 import hep.aida.ITree;
010
011 // Log4J
012 import org.apache.log4j.Logger;
013
014 /** <code>SQLAnalysisFactory</code> supports {@link AidaSQLStoreFactory}
015 * (with a key <code>sql</code>) and {@link SQLTupleFactory}.
016 * <p><font color="#880088">
017 * <pre>
018 * $Log: SQLAnalysisFactory.java,v $
019 * Revision 1.14 2007/05/23 16:38:44 hrivnac
020 * logical connections for Plotter; better UML
021 *
022 * Revision 1.13 2006/11/15 16:16:01 hrivnac
023 * Oracle work fine in CERN, cache enabled
024 *
025 * Revision 1.12 2004/10/08 15:22:33 hrivnac
026 * JAS3 plugin works
027 *
028 * Revision 1.11 2004/05/22 15:12:59 hrivnac
029 * class id reformated
030 *
031 * Revision 1.10 2004/04/14 13:39:46 hrivnac
032 * 1.5 warnings fixed
033 *
034 * Revision 1.9 2004/04/13 15:45:54 hrivnac
035 * AIDA URL introduced
036 *
037 * Revision 1.8 2004/02/12 16:39:40 hrivnac
038 * niceing
039 *
040 * Revision 1.7 2004/02/10 14:50:58 hrivnac
041 * JavaDoc tags completed
042 *
043 * Revision 1.6 2004/02/04 13:30:39 hrivnac
044 * - improvement of Enums internal mapping
045 * - general cleaning
046 *
047 * Revision 1.5 2003/11/24 15:13:22 hrivnac
048 * Logging improved.
049 *
050 * Revision 1.4 2003/11/20 17:36:08 hrivnac
051 * JavaDoc links fixed
052 *
053 * Revision 1.3 2003/11/20 17:21:57 hrivnac
054 * Java 1.5 natively supported, Log4J reporting improved.
055 *
056 * Revision 1.2 2003/11/05 19:46:22 hrivnac
057 * - FreeHEP 1.2.1
058 * - JAIDA 3.2.1
059 *
060 * Revision 1.4 2003/10/21 13:24:52 hrivnac
061 * Constructor from columnString implemented.
062 *
063 * Revision 1.2 2003/10/02 10:00:40 hrivnac
064 * Cleaning.
065 *
066 * Revision 1.3 2003/09/30 14:11:48 hrivnac
067 * Can created SQLTuples.
068 *
069 * Revision 1.2 2003/09/29 14:36:40 hrivnac
070 * Works per attribute.
071 *
072 * </pre>
073 * </font></p>
074 * @opt attributes
075 * @opt operations
076 * @opt types
077 * @opt visibility
078 * @version $Id: SQLAnalysisFactory.java,v 1.14 2007/05/23 16:38:44 hrivnac Exp $
079 * @author <a href="mailto:Julius.Hrivnac@cern.ch">J.Hrivnac</a> */
080 public class SQLAnalysisFactory extends AnalysisFactory {
081
082 /** Register {@link AidaSQLStoreFactory} as <code>sql</code>. */
083 static {
084 FreeHEPLookup.instance().add(new AidaSQLStoreFactory(), "sql");
085 }
086
087 /** Creates {@link SQLTupleFactory} if {@link ITree} store type
088 * is <code>sql</code>. Otherwise, uses {@link AnalysisFactory}.
089 * @param tree The ITree tu be used for the ITupleFactory.
090 * @return The ITupleFactory associated with he ITree.
091 * @throws IllegalArgumentException if the ITupleFactory can't be created from the ITree. */
092 public ITupleFactory createTupleFactory(ITree tree) throws IllegalArgumentException {
093 if (tree.storeName() != null &&
094 (new AIDAURL(tree.storeName())).storeType().equals("sql")) {
095 try {
096 return new SQLTupleFactory(tree);
097 }
098 catch (SQLTupleException e) {
099 log.error(Util.report("Can't create SQLTupleFactory", e), e);
100 throw new IllegalArgumentException("Couldn't create SQLTupleFactory", e);
101 }
102 }
103 else {
104 return super.createTupleFactory(tree);
105 }
106 }
107
108 /** Logging . */
109 private static Logger log = Logger.getLogger(Util.class);
110
111 }