alfresco-community-repo/source/java/org/alfresco/repo/avm/AVMAspectNameDAOHibernate.java
Britt Park d67b926589 Marking of AVM Nodes with Aspects works (according to some minimal tests).
Schema has been updated, DAO written, garbage collection updated to clean
out aspects.  Also some seemingly unnecessary changes in visibility 
declarations to deal with strange intermittent Spring wiring failures in 
one of my tests.


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/WCM-DEV2/root@3560 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
2006-08-22 01:22:01 +00:00

108 lines
3.1 KiB
Java

/*
* Copyright (C) 2006 Alfresco, Inc.
*
* Licensed under the Mozilla Public License version 1.1
* with a permitted attribution clause. You may obtain a
* copy of the License at
*
* http://www.alfresco.org/legal/license.txt
*
* 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.alfresco.repo.avm;
import java.util.List;
import org.alfresco.service.namespace.QName;
import org.hibernate.Query;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
/**
* Hibernate implementation of AVMAspectNameDAO.
* @author britt
*/
public class AVMAspectNameDAOHibernate extends HibernateDaoSupport
implements AVMAspectNameDAO
{
/**
* Persist an aspect name.
* @param aspectName The item to persist.
*/
public void save(AVMAspectName aspectName)
{
getSession().save(aspectName);
}
/**
* Delete an Aspect Name.
* @param aspectName The item to delete.
*/
public void delete(AVMAspectName aspectName)
{
getSession().delete(aspectName);
}
/**
* Delete a single aspect name from a node.
* @param node The node.
* @param aspectName The aspect name.
*/
public void delete(AVMNode node, QName aspectName)
{
Query delete =
getSession().createQuery(
"delete from AVMAspectNameImpl aa where aa.node = :node and aa.name = :name");
delete.setEntity("node", node);
delete.setParameter("name", aspectName);
delete.executeUpdate();
}
/**
* Delete all Aspect Names on a given node.
* @param node The given node.
*/
public void delete(AVMNode node)
{
Query delete =
getSession().createQuery("delete from AVMAspectNameImpl aa where aa.node = :node");
delete.setEntity("node", node);
delete.executeUpdate();
}
/**
* Get all Aspect Names for a given node.
* @param node The AVM Node.
* @return A List of AVMAspectNames.
*/
@SuppressWarnings("unchecked")
public List<AVMAspectName> get(AVMNode node)
{
Query query =
getSession().createQuery("from AVMAspectNameImpl aa where aa.node = :node");
query.setEntity("node", node);
return (List<AVMAspectName>)query.list();
}
/**
* Does the given node have the given asset.
* @param node The AVM node.
* @param name The QName of the Aspect.
* @return Whether the aspect is there.
*/
public boolean exists(AVMNode node, QName name)
{
Query query =
getSession().createQuery(
"from AVMAspectNameImpl aa where aa.node = :node and aa.name = :name");
query.setEntity("node", node);
query.setParameter("name", name);
return query.uniqueResult() != null;
}
}