Patch application on startup reports progress

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@2190 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Derek Hulley
2006-01-24 23:49:16 +00:00
parent ff7e10f80c
commit 744535fa73
10 changed files with 245 additions and 22 deletions

View File

@@ -16,6 +16,8 @@
*/
package org.alfresco.repo.admin.patch.hibernate;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import org.alfresco.error.AlfrescoRuntimeException;
@@ -36,6 +38,7 @@ import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
public class HibernatePatchDaoServiceImpl extends HibernateDaoSupport implements PatchDaoService
{
public static final String QUERY_GET_ALL_APPLIED_PATCHES = "patch.GetAllAppliedPatches";
public static final String QUERY_GET_APPLIED_PATCHES_BY_DATE = "patch.GetAppliedPatchesByDate";
public AppliedPatch newAppliedPatch(String id)
{
@@ -62,6 +65,11 @@ public class HibernatePatchDaoServiceImpl extends HibernateDaoSupport implements
return patch;
}
public void detach(AppliedPatch appliedPatch)
{
getSession().evict(appliedPatch);
}
/**
* @see #QUERY_GET_ALL_APPLIED_PATCHES
*/
@@ -80,4 +88,35 @@ public class HibernatePatchDaoServiceImpl extends HibernateDaoSupport implements
// done
return queryResults;
}
/**
* @see #QUERY_GET_APPLIED_PATCHES_BY_DATE
*/
@SuppressWarnings("unchecked")
public List<AppliedPatch> getAppliedPatches(final Date fromDate, final Date toDate)
{
HibernateCallback callback = new HibernateCallback()
{
public Object doInHibernate(Session session)
{
Query query = session.getNamedQuery(HibernatePatchDaoServiceImpl.QUERY_GET_ALL_APPLIED_PATCHES);
return query.list();
}
};
List<AppliedPatch> queryResults = (List) getHibernateTemplate().execute(callback);
// eliminate results that are out of range
Iterator<AppliedPatch> iterator = queryResults.iterator();
while (iterator.hasNext())
{
AppliedPatch appliedPatch = iterator.next();
Date appliedOnDate = appliedPatch.getAppliedOnDate();
if (fromDate.compareTo(appliedOnDate) >= 0 || toDate.compareTo(appliedOnDate) <= 0)
{
// it is out of range
iterator.remove();
}
}
// done
return queryResults;
}
}