001
014
015 package com.liferay.portal.dao.orm.hibernate;
016
017 import com.liferay.portal.kernel.dao.orm.Projection;
018 import com.liferay.portal.kernel.dao.orm.ProjectionFactory;
019 import com.liferay.portal.kernel.dao.orm.ProjectionList;
020 import com.liferay.portal.kernel.dao.orm.Type;
021 import com.liferay.portal.kernel.security.pacl.DoPrivileged;
022 import com.liferay.portal.kernel.util.ArrayUtil;
023
024 import org.hibernate.criterion.Projections;
025
026
029 @DoPrivileged
030 public class ProjectionFactoryImpl implements ProjectionFactory {
031
032 @Override
033 public Projection alias(Projection projection, String alias) {
034 ProjectionImpl projectionImpl = (ProjectionImpl)projection;
035
036 return new ProjectionImpl(
037 Projections.alias(projectionImpl.getWrappedProjection(), alias));
038 }
039
040 @Override
041 public Projection avg(String propertyName) {
042 return new ProjectionImpl(Projections.avg(propertyName));
043 }
044
045 @Override
046 public Projection count(String propertyName) {
047 return new ProjectionImpl(Projections.count(propertyName));
048 }
049
050 @Override
051 public Projection countDistinct(String propertyName) {
052 return new ProjectionImpl(Projections.countDistinct(propertyName));
053 }
054
055 @Override
056 public Projection distinct(Projection projection) {
057 ProjectionImpl projectionImpl = (ProjectionImpl)projection;
058
059 return new ProjectionImpl(
060 Projections.distinct(projectionImpl.getWrappedProjection()));
061 }
062
063 @Override
064 public Projection groupProperty(String propertyName) {
065 return new ProjectionImpl(Projections.groupProperty(propertyName));
066 }
067
068 @Override
069 public Projection max(String propertyName) {
070 return new ProjectionImpl(Projections.max(propertyName));
071 }
072
073 @Override
074 public Projection min(String propertyName) {
075 return new ProjectionImpl(Projections.min(propertyName));
076 }
077
078 @Override
079 public ProjectionList projectionList() {
080 return new ProjectionListImpl(Projections.projectionList());
081 }
082
083 @Override
084 public Projection property(String propertyName) {
085 return new ProjectionImpl(Projections.property(propertyName));
086 }
087
088 @Override
089 public Projection rowCount() {
090 return new ProjectionImpl(Projections.rowCount());
091 }
092
093 @Override
094 public Projection sqlProjection(
095 String sql, String[] columnAliases, Type[] types) {
096
097 if (ArrayUtil.isEmpty(types)) {
098 return new ProjectionImpl(
099 Projections.sqlProjection(sql, columnAliases, null));
100 }
101
102 org.hibernate.type.Type[] hibernateTypes =
103 new org.hibernate.type.Type[types.length];
104
105 for (int i = 0; i < types.length; i++) {
106 hibernateTypes[i] = TypeTranslator.translate(types[i]);
107 }
108
109 return new ProjectionImpl(
110 Projections.sqlProjection(sql, columnAliases, hibernateTypes));
111 }
112
113 @Override
114 public Projection sum(String propertyName) {
115 return new ProjectionImpl(Projections.sum(propertyName));
116 }
117
118 }