/********************************************************************************** * $URL: https://source.sakaiproject.org/svn/sam/trunk/samigo-services/src/java/org/sakaiproject/tool/assessment/facade/authz/AuthorizationFacadeQueries.java $ * $Id: AuthorizationFacadeQueries.java 106463 2012-04-02 12:20:09Z david.horwitz@uct.ac.za $ *********************************************************************************** * * Copyright (c) 2004, 2005, 2006, 2008 The Sakai Foundation * * Licensed under the Educational Community License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.opensource.org/licenses/ECL-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * **********************************************************************************/ package org.sakaiproject.tool.assessment.facade.authz; import java.sql.SQLException; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.springframework.orm.hibernate3.HibernateCallback; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.Session; import org.sakaiproject.tool.assessment.data.dao.authz.AuthorizationData; import org.sakaiproject.tool.assessment.data.dao.authz.QualifierData; import org.sakaiproject.tool.assessment.data.ifc.authz.AuthorizationIfc; import org.sakaiproject.tool.assessment.data.ifc.authz.QualifierIfc; import org.sakaiproject.tool.assessment.facade.DataFacadeException; import org.sakaiproject.tool.assessment.facade.authz.AuthorizationFacade; import org.sakaiproject.tool.assessment.facade.authz.QualifierFacade; import org.sakaiproject.tool.assessment.services.PersistenceService; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; public class AuthorizationFacadeQueries extends HibernateDaoSupport implements AuthorizationFacadeQueriesAPI{ private static Log log = LogFactory.getLog(AuthorizationFacadeQueries.class); public AuthorizationFacadeQueries() { } public QualifierIteratorFacade getQualifierParents(final String qualifierId) { final HibernateCallback hcb = new HibernateCallback(){ public Object doInHibernate(Session session) throws HibernateException, SQLException { Query q = session.createQuery("select p from QualifierData as p, QualifierData as c, QualifierHierarchyData as q where p.qualifierId=q.parentId and c.qualifierId=q.childId and q.childId=?"); q.setString(0, qualifierId); return q.list(); }; }; List parents = getHibernateTemplate().executeFind(hcb); // List parents = getHibernateTemplate().find( // "select p from QualifierData as p, QualifierData as c, QualifierHierarchyData as q where p.qualifierId=q.parentId and c.qualifierId=q.childId and q.childId=?", // new Object[] {qualifierId} // , // new org.hibernate.type.Type[] {Hibernate.STRING}); // turn them to Facade ArrayList a = new ArrayList(); for (int i = 0; i < parents.size(); i++) { QualifierData data = (QualifierData) parents.get(i); QualifierFacade qf = new QualifierFacade(data); a.add(qf); } return new QualifierIteratorFacade(a); } public QualifierIteratorFacade getQualifierChildren(final String qualifierId) { final HibernateCallback hcb = new HibernateCallback(){ public Object doInHibernate(Session session) throws HibernateException, SQLException { Query q = session.createQuery("select p from QualifierData as p, QualifierData as c, QualifierHierarchyData as q where p.qualifierId=q.parentId and c.qualifierId=q.childId and q.parentId=?"); q.setString(0, qualifierId); return q.list(); }; }; List children = getHibernateTemplate().executeFind(hcb); // List children = getHibernateTemplate().find( // "select p from QualifierData as p, QualifierData as c, QualifierHierarchyData as q where p.qualifierId=q.parentId and c.qualifierId=q.childId and q.parentId=?", // new Object[] {qualifierId}, // new org.hibernate.type.Type[] {Hibernate.STRING}); // turn them to Facade ArrayList a = new ArrayList(); for (int i = 0; i < children.size(); i++) { QualifierData data = (QualifierData) children.get(i); QualifierFacade qf = new QualifierFacade(data); a.add(qf); } return new QualifierIteratorFacade(a); } public void showQualifiers(QualifierIteratorFacade iter){ while (iter.hasNextQualifier()){ //QualifierFacade q = (QualifierFacade)iter.nextQualifier(); } } public void addAuthz(AuthorizationIfc a) { AuthorizationData data; if (a instanceof AuthorizationFacade) data = (AuthorizationData)((AuthorizationFacade) a).getData(); else data = (AuthorizationData)a; int retryCount = PersistenceService.getInstance().getPersistenceHelper().getRetryCount().intValue(); while (retryCount > 0){ try { getHibernateTemplate().save(data); retryCount = 0; } catch (Exception e) { log.warn("problem adding authorization: "+e.getMessage()); retryCount = PersistenceService.getInstance().getPersistenceHelper().retryDeadlock(e, retryCount); } } } public void addQualifier(QualifierIfc q) { QualifierData data; if (q instanceof QualifierFacade) data = (QualifierData)((QualifierFacade) q).getData(); else data = (QualifierData) q; int retryCount = PersistenceService.getInstance().getPersistenceHelper().getRetryCount().intValue(); while (retryCount > 0){ try { getHibernateTemplate().save(data); retryCount = 0; } catch (Exception e) { log.warn("problem adding Qualifier: "+e.getMessage()); retryCount = PersistenceService.getInstance().getPersistenceHelper().retryDeadlock(e, retryCount); } } } public static void main(String[] args) throws DataFacadeException { AuthorizationFacadeQueriesAPI instance = new AuthorizationFacadeQueries(); if (args[0].equals("listChild")) { QualifierIteratorFacade childrenIter = instance.getQualifierChildren(args[1]); instance.showQualifiers(childrenIter); } if (args[0].equals("addAuthz")) { AuthorizationFacade a = new AuthorizationFacade(args[1], args[2], args[3], new Date(), null,"2",new Date(),Boolean.TRUE); instance.addAuthz(a); } System.exit(0); } }