001    /*
002     * Copyright 2005-2007 The Kuali Foundation
003     * 
004     * 
005     * Licensed under the Educational Community License, Version 2.0 (the "License");
006     * you may not use this file except in compliance with the License.
007     * You may obtain a copy of the License at
008     * 
009     * http://www.opensource.org/licenses/ecl2.php
010     * 
011     * Unless required by applicable law or agreed to in writing, software
012     * distributed under the License is distributed on an "AS IS" BASIS,
013     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014     * See the License for the specific language governing permissions and
015     * limitations under the License.
016     */
017    package org.kuali.rice.kew.edl.dao.impl;
018    
019    import java.util.ArrayList;
020    import java.util.Iterator;
021    import java.util.List;
022    
023    import org.apache.ojb.broker.query.Criteria;
024    import org.apache.ojb.broker.query.QueryByCriteria;
025    import org.kuali.rice.kew.edl.bo.EDocLiteAssociation;
026    import org.kuali.rice.kew.edl.bo.EDocLiteDefinition;
027    import org.kuali.rice.kew.edl.bo.EDocLiteStyle;
028    import org.kuali.rice.kew.edl.dao.EDocLiteDAO;
029    import org.springmodules.orm.ojb.support.PersistenceBrokerDaoSupport;
030    
031    
032    public class EDocLiteDAOOjbImpl extends PersistenceBrokerDaoSupport implements EDocLiteDAO {
033    
034        public void saveEDocLiteStyle(EDocLiteStyle styleData) {
035            this.getPersistenceBrokerTemplate().store(styleData);
036        }
037    
038        public void saveEDocLiteDefinition(EDocLiteDefinition edocLiteData) {
039            this.getPersistenceBrokerTemplate().store(edocLiteData);
040        }
041    
042        public void saveEDocLiteAssociation(EDocLiteAssociation assoc) {
043            this.getPersistenceBrokerTemplate().store(assoc);
044        }
045    
046        public EDocLiteStyle getEDocLiteStyle(String styleName) {
047            Criteria criteria = new Criteria();
048            criteria.addEqualTo("name", styleName);
049            criteria.addEqualTo("activeInd", Boolean.TRUE);
050            return (EDocLiteStyle) this.getPersistenceBrokerTemplate().getObjectByQuery(new QueryByCriteria(EDocLiteStyle.class, criteria));
051        }
052    
053        public EDocLiteDefinition getEDocLiteDefinition(String defName) {
054            Criteria criteria = new Criteria();
055            criteria.addEqualTo("name", defName);
056            criteria.addEqualTo("activeInd", Boolean.TRUE);
057            return (EDocLiteDefinition) this.getPersistenceBrokerTemplate().getObjectByQuery(new QueryByCriteria(EDocLiteDefinition.class, criteria));
058        }
059    
060        public EDocLiteAssociation getEDocLiteAssociation(String docTypeName) {
061            Criteria criteria = new Criteria();
062            criteria.addEqualTo("edlName", docTypeName);
063            criteria.addEqualTo("activeInd", Boolean.TRUE);
064            return (EDocLiteAssociation) this.getPersistenceBrokerTemplate().getObjectByQuery(new QueryByCriteria(EDocLiteAssociation.class, criteria));
065        }
066    
067        /**
068         * Returns names of all active Styles
069         */
070        public List<String> getEDocLiteStyleNames() {
071            List<EDocLiteStyle> styles = getEDocLiteStyles();
072            List<String> styleNames = new ArrayList<String>(styles.size());
073            for (EDocLiteStyle style: styles) {
074                styleNames.add(style.getName());
075            }
076            return styleNames;
077        }
078    
079        /**
080         * Returns all active Styles
081         */
082        public List<EDocLiteStyle> getEDocLiteStyles() {
083            Criteria criteria = new Criteria();
084            criteria.addEqualTo("activeInd", Boolean.TRUE);
085            Iterator it = this.getPersistenceBrokerTemplate().getIteratorByQuery(new QueryByCriteria(EDocLiteStyle.class, criteria));
086            List<EDocLiteStyle> styles = new ArrayList<EDocLiteStyle>();
087            while (it.hasNext()) {
088                styles.add((EDocLiteStyle) it.next());
089            }
090            return styles;
091        }
092    
093        public List getEDocLiteDefinitions() {
094            Criteria criteria = new Criteria();
095            criteria.addEqualTo("activeInd", Boolean.TRUE);
096            Iterator it = this.getPersistenceBrokerTemplate().getIteratorByQuery(new QueryByCriteria(EDocLiteDefinition.class, criteria));
097            List defs = new ArrayList();
098            while (it.hasNext()) {
099                defs.add(((EDocLiteDefinition) it.next()).getName());
100            }
101            return defs;
102        }
103    
104        public List getEDocLiteAssociations() {
105            Criteria criteria = new Criteria();
106            criteria.addEqualTo("activeInd", Boolean.TRUE);
107            Iterator it = this.getPersistenceBrokerTemplate().getIteratorByQuery(new QueryByCriteria(EDocLiteAssociation.class, criteria));
108            List assocs = new ArrayList();
109            while (it.hasNext()) {
110                assocs.add(it.next());
111            }
112            return assocs;
113        }
114    
115            public List search(EDocLiteAssociation edocLite) {
116                    Criteria crit = new Criteria();
117                    if (edocLite.getActiveInd() != null) {
118                            crit.addEqualTo("activeInd", edocLite.getActiveInd());
119                    }
120                    if (edocLite.getDefinition() != null) {
121                            crit.addLike("UPPER(definition)", "%"+edocLite.getDefinition().toUpperCase()+"%");
122                    }
123                    if (edocLite.getEdlName() != null) {
124                            crit.addLike("UPPER(edlName)", "%"+edocLite.getEdlName().toUpperCase()+"%");
125                    }
126                    if (edocLite.getStyle() != null) {
127                            crit.addLike("UPPER(style)", "%"+edocLite.getStyle().toUpperCase()+"%");
128                    }
129                    return (List)this.getPersistenceBrokerTemplate().getCollectionByQuery(new QueryByCriteria(EDocLiteAssociation.class, crit));
130            }
131    
132            public EDocLiteAssociation getEDocLiteAssociation(Long associationId) {
133                    Criteria crit = new Criteria();
134                    crit.addEqualTo("edocLiteAssocId", associationId);
135                    return (EDocLiteAssociation)this.getPersistenceBrokerTemplate().getObjectByQuery(new QueryByCriteria(EDocLiteAssociation.class, crit));
136            }
137    }