001: /*
002: * JBoss, Home of Professional Open Source.
003: * Copyright 2006, Red Hat Middleware LLC, and individual contributors
004: * as indicated by the @author tags. See the copyright.txt file in the
005: * distribution for a full listing of individual contributors.
006: *
007: * This is free software; you can redistribute it and/or modify it
008: * under the terms of the GNU Lesser General Public License as
009: * published by the Free Software Foundation; either version 2.1 of
010: * the License, or (at your option) any later version.
011: *
012: * This software is distributed in the hope that it will be useful,
013: * but WITHOUT ANY WARRANTY; without even the implied warranty of
014: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
015: * Lesser General Public License for more details.
016: *
017: * You should have received a copy of the GNU Lesser General Public
018: * License along with this software; if not, write to the Free
019: * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
020: * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
021: */
022: package org.jboss.ejb.plugins.cmp.jdbc;
023:
024: import org.jboss.deployment.DeploymentException;
025: import org.jboss.ejb.plugins.cmp.jdbc.metadata.JDBCQueryMetaData;
026: import org.jboss.logging.Logger;
027:
028: /**
029: * JDBCCommandFactory creates all required CMP command and some JDBC
030: * specific commands. This class should not store any data, which
031: * should be put in the store manager.
032: *
033: * @author <a href="mailto:dain@daingroup.com">Dain Sundstrom</a>
034: * @author <a href="mailto:justin@j-m-f.demon.co.uk">Justin Forder</a>
035: * @author <a href="danch@nvisia.com">danch (Dan Christopherson</a>
036: * @author <a href="loubyansky@ua.fm">Alex Loubyansky</a>
037: * @version $Revision: 57209 $
038: */
039: public class JDBCCommandFactory {
040:
041: private final Logger log;
042: private final JDBCStoreManager manager;
043:
044: public JDBCCommandFactory(JDBCStoreManager manager)
045: throws Exception {
046: this .manager = manager;
047:
048: log = Logger
049: .getLogger(this .getClass().getName()
050: + "."
051: + manager.getContainer().getBeanMetaData()
052: .getEjbName());
053: }
054:
055: public JDBCQueryCommand createFindByPrimaryKeyQuery(
056: JDBCQueryMetaData q) throws DeploymentException {
057: return new JDBCFindByPrimaryKeyQuery(manager, q);
058: }
059:
060: public JDBCQueryCommand createFindAllQuery(JDBCQueryMetaData q)
061: throws DeploymentException {
062: return new JDBCFindAllQuery(manager, q);
063: }
064:
065: public JDBCQueryCommand createDeclaredSQLQuery(JDBCQueryMetaData q)
066: throws DeploymentException {
067: return new JDBCDeclaredSQLQuery(manager, q);
068: }
069:
070: public JDBCQueryCommand createEJBQLQuery(JDBCQueryMetaData q)
071: throws DeploymentException {
072: return new JDBCEJBQLQuery(manager, q);
073: }
074:
075: public JDBCQueryCommand createDynamicQLQuery(JDBCQueryMetaData q)
076: throws DeploymentException {
077: return new JDBCDynamicQLQuery(manager, q);
078: }
079:
080: public JDBCQueryCommand createJBossQLQuery(JDBCQueryMetaData q)
081: throws DeploymentException {
082: return new JDBCJBossQLQuery(manager, q);
083: }
084:
085: public JDBCQueryCommand createFindByQuery(JDBCQueryMetaData q)
086: throws DeploymentException {
087: return new JDBCFindByQuery(manager, q);
088: }
089:
090: public JDBCLoadRelationCommand createLoadRelationCommand() {
091: return new JDBCLoadRelationCommand(manager);
092: }
093:
094: public JDBCDeleteRelationsCommand createDeleteRelationsCommand() {
095: return new JDBCDeleteRelationsCommand(manager);
096: }
097:
098: public JDBCInsertRelationsCommand createInsertRelationsCommand() {
099: return new JDBCInsertRelationsCommand(manager);
100: }
101:
102: // lifecycle commands
103:
104: public JDBCInitCommand createInitCommand() {
105: return new JDBCInitCommand(manager);
106: }
107:
108: public JDBCStartCommand createStartCommand() {
109: return new JDBCStartCommand(manager);
110: }
111:
112: public JDBCStopCommand createStopCommand() {
113: return new JDBCStopCommand(manager);
114: }
115:
116: public JDBCDestroyCommand createDestroyCommand() {
117: return new JDBCDestroyCommand(manager);
118: }
119:
120: // entity life cycle commands
121:
122: public JDBCCreateBeanClassInstanceCommand createCreateBeanClassInstanceCommand()
123: throws Exception {
124:
125: return new JDBCCreateBeanClassInstanceCommand(manager);
126: }
127:
128: public JDBCInitEntityCommand createInitEntityCommand() {
129: return new JDBCInitEntityCommand(manager);
130: }
131:
132: public JDBCFindEntityCommand createFindEntityCommand() {
133: return new JDBCFindEntityCommand(manager);
134: }
135:
136: public JDBCFindEntitiesCommand createFindEntitiesCommand() {
137: return new JDBCFindEntitiesCommand(manager);
138: }
139:
140: public JDBCCreateCommand createCreateEntityCommand()
141: throws DeploymentException {
142:
143: JDBCCreateCommand cec;
144: try {
145: cec = (JDBCCreateCommand) manager.getMetaData()
146: .getEntityCommand().getCommandClass().newInstance();
147: cec.init(manager);
148: } catch (DeploymentException de) {
149: throw de;
150: } catch (Exception e) {
151: throw new DeploymentException(
152: "Couldn't create entity command: ", e);
153: }
154:
155: if (log.isDebugEnabled())
156: log.debug("entity-command: "
157: + manager.getMetaData().getEntityCommand());
158:
159: return cec;
160: }
161:
162: public JDBCPostCreateEntityCommand createPostCreateEntityCommand() {
163:
164: return new JDBCPostCreateEntityCommand(manager);
165:
166: }
167:
168: public JDBCRemoveEntityCommand createRemoveEntityCommand()
169: throws DeploymentException {
170: return new JDBCRemoveEntityCommand(manager);
171: }
172:
173: public JDBCLoadEntityCommand createLoadEntityCommand()
174: throws DeploymentException {
175: return new JDBCLoadEntityCommand(manager);
176: }
177:
178: public JDBCIsModifiedCommand createIsModifiedCommand() {
179: return new JDBCIsModifiedCommand(manager);
180: }
181:
182: public JDBCStoreEntityCommand createStoreEntityCommand() {
183: return new JDBCStoreEntityCommand(manager);
184: }
185:
186: // entity activation and passivation commands
187: public JDBCActivateEntityCommand createActivateEntityCommand() {
188: return new JDBCActivateEntityCommand(manager);
189: }
190:
191: public JDBCPassivateEntityCommand createPassivateEntityCommand() {
192: return new JDBCPassivateEntityCommand(manager);
193: }
194: }
|