package pt.estgp.estgweb.domain.dao.impl;
import org.hibernate.Criteria;
import org.hibernate.criterion.Order;
import pt.estgp.estgweb.domain.RepositoryDocumentImpl;
import java.util.List;
import static org.
hibernate.
criterion.
Restrictions.
eq;
/**
* @author Jorge Machado
* @date 28/Fev/2008
* @time 2:51:06
* @see pt.estgp.estgweb.domain.dao.impl
*/
public class RepositoryDocumentDaoImpl
extends RepositoryDocumentDao
{
private RepositoryDocumentDaoImpl
()
{
}
public static RepositoryDocumentDaoImpl getInstance
()
{
if (myInstance ==
null)
myInstance =
new RepositoryDocumentDaoImpl
();
return (RepositoryDocumentDaoImpl
) myInstance
;
}
public List
<RepositoryDocumentImpl
> findDocumentsSortPublishDateDesc
(boolean onlyVisible,
long collectionId
)
{
return findDocuments
(onlyVisible,collectionId,
"publishDate",
"desc");
}
public List
<RepositoryDocumentImpl
> findDocumentsSortPublishDateAsc
(boolean onlyVisible,
long collectionId
)
{
return findDocuments
(onlyVisible,collectionId,
"publishDate",
"asc");
}
public List
<RepositoryDocumentImpl
> findDocumentsSortTitleDesc
(boolean onlyVisible,
long collectionId
)
{
return findDocuments
(onlyVisible,collectionId,
"title",
"desc");
}
public List
<RepositoryDocumentImpl
> findDocumentsSortTitleAsc
(boolean onlyVisible,
long collectionId
)
{
return findDocuments
(onlyVisible,collectionId,
"title",
"asc");
}
public List
<RepositoryDocumentImpl
> findDocuments
(boolean onlyVisible,
long collectionId,
1.5.0/docs/api/java/lang/String.html">String orderField,
1.5.0/docs/api/java/lang/String.html">String orderDirection
)
{
1.5.0/docs/api/java/lang/String.html">String orderFinalField = orderField ==
null ? "publishDate" : orderField
;
Order order = orderDirection.
equals("asc") ? Order.
asc(orderFinalField
) : Order.
desc(orderFinalField
);
Criteria c = createCriteria
()
.
add(eq
("collection.id",collectionId
))
.
addOrder(order
)
.
addOrder(Order.
desc("saveDate"));
if(onlyVisible
)
c.
add(eq
("visible",
true));
return c.
list();
}
public List
<RepositoryDocumentImpl
> findDocumentsByTitleAndCollection
(1.5.0/docs/api/java/lang/String.html">String title,
long colId
) {
Criteria c = createCriteria
()
.
add(eq
("collection.id",colId
))
.
add(eq
("title",title
));
return c.
list();
}
}