001    /*
002     * Copyright 2011 The Kuali Foundation.
003     * 
004     * Licensed under the Educational Community License, Version 2.0 (the "License");
005     * you may not use this file except in compliance with the License.
006     * You may obtain a copy of the License at
007     * 
008     * http://www.opensource.org/licenses/ecl2.php
009     * 
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed under the License is distributed on an "AS IS" BASIS,
012     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013     * See the License for the specific language governing permissions and
014     * limitations under the License.
015     */
016    package org.kuali.kfs.module.endow.dataaccess.impl;
017    
018    import java.util.ArrayList;
019    import java.util.Iterator;
020    import java.util.List;
021    
022    import org.apache.ojb.broker.query.Criteria;
023    import org.apache.ojb.broker.query.ReportQueryByCriteria;
024    import org.kuali.kfs.module.endow.EndowPropertyConstants;
025    import org.kuali.kfs.module.endow.businessobject.KemidReportGroup;
026    import org.kuali.kfs.module.endow.dataaccess.KemidReportGroupDao;
027    import org.kuali.kfs.sys.KFSConstants;
028    import org.kuali.rice.kns.dao.impl.PlatformAwareDaoBaseOjb;
029    
030    public class KemidReportGroupDaoOjb extends PlatformAwareDaoBaseOjb implements KemidReportGroupDao {
031    
032        /**
033         * 
034         * @see org.kuali.kfs.module.endow.dataaccess.KemidReportGroupDao#getKemidsByAttribute(java.lang.String, java.util.List)
035         */
036        public List<String> getKemidsByAttribute(String attributeName, List<String> values) {
037            
038            Criteria criteria = new Criteria();
039            for (String value : values) {
040                Criteria c = new Criteria();
041                if (value.contains(KFSConstants.WILDCARD_CHARACTER)) {
042                    c.addLike(attributeName, value.trim().replace(KFSConstants.WILDCARD_CHARACTER, KFSConstants.PERCENTAGE_SIGN));
043                } else {
044                    c.addEqualTo(attributeName, value.trim());
045                } 
046                criteria.addOrCriteria(c);
047            }
048            ReportQueryByCriteria query = new ReportQueryByCriteria(KemidReportGroup.class, criteria, true);
049            query.setAttributes(new String[] {EndowPropertyConstants.KEMID});       
050            Iterator<Object> result = getPersistenceBrokerTemplate().getReportQueryIteratorByQuery(query); 
051            
052            //return (List<String>) getPersistenceBrokerTemplate().getCollectionByQuery(query);
053            List<String> kemids = new ArrayList<String>();
054            while (result.hasNext()) {
055                Object[] data = (Object[]) result.next();
056                kemids.add(data[0].toString());
057            }
058            
059            return kemids;
060        }
061        
062        /**
063         * 
064         * @see org.kuali.kfs.module.endow.dataaccess.KemidReportGroupDao#getAttributeValues(java.lang.String, java.util.List)
065         */
066        public List<String> getAttributeValues(String attributeName, List<String> values) {
067            
068            Criteria criteria = new Criteria();
069            for (String value : values) {
070                Criteria c = new Criteria();
071                if (value.contains(KFSConstants.WILDCARD_CHARACTER)) {
072                    c.addLike(attributeName, value.trim().replace(KFSConstants.WILDCARD_CHARACTER, KFSConstants.PERCENTAGE_SIGN));
073                } else {
074                    c.addEqualTo(attributeName, value.trim());
075                }            
076                criteria.addOrCriteria(c);
077            }        
078            ReportQueryByCriteria query = new ReportQueryByCriteria(KemidReportGroup.class, criteria, true);
079            query.setAttributes(new String[] {attributeName});
080            Iterator<Object> result = getPersistenceBrokerTemplate().getReportQueryIteratorByQuery(query); 
081            
082            //return (List<String>) getPersistenceBrokerTemplate().getCollectionByQuery(query);
083            List<String> attributeValues = new ArrayList<String>();
084            while (result.hasNext()) {
085                Object[] data = (Object[]) result.next();
086                attributeValues.add(data[0].toString());
087            }
088            
089            return attributeValues;
090        }
091    }