Subversion Repositories bacoAlunos

Compare Revisions

Ignore whitespace Rev 89 → Rev 90

/impl/src/java/pt/estgp/estgweb/Globals.java
13,7 → 13,8
public class Globals
{
 
public static final String ALL_ROLE = ConfigProperties.getProperty("user.super");;
public static final int SEARCH_MAX_RESULTS = ConfigProperties.getIntProperty("search.max.results");
public static final String ALL_ROLE = ConfigProperties.getProperty("user.super");
public static final String ACTUAL_RELATIVE_PATH = "ACTUAL_RELATIVE_PATH";
public static final String ADMIN_ROLE = ConfigProperties.getProperty("user.admin");
public static final String SUPER_USER_ROLE = ConfigProperties.getProperty("user.super");
/impl/src/java/pt/estgp/estgweb/services/blogs/BlogsCommonServices.java
New file
0,0 → 1,46
package pt.estgp.estgweb.services.blogs;
 
import pt.utl.ist.berserk.logic.serviceManager.IService;
import pt.estgp.estgweb.services.common.IModuleCommonServices;
import pt.estgp.estgweb.services.common.SearchTypeEnum;
import pt.estgp.estgweb.services.common.IToDoCat;
import pt.estgp.estgweb.services.common.ISearchResults;
import pt.estgp.estgweb.services.announcements.AnnouncementsCommonServices;
import pt.estgp.estgweb.domain.UserSession;
import org.apache.log4j.Logger;
 
/*
* @author Goncalo Luiz gedl [AT] rnl [DOT] ist [DOT] utl [DOT] pt
*
*
* Created at 17/Out/2003 , 23:45:24
*
*/
/**
* @author Jorge Machado
*
*
* Created at 17/Out/2003 , 23:45:24
*
*/
public class BlogsCommonServices implements IService, IModuleCommonServices
{
private static final Logger logger = Logger.getLogger(BlogsCommonServices.class);
 
 
public int countSearch(String search, SearchTypeEnum searchType, UserSession userSession) {
return 0; //To change body of implemented methods use File | Settings | File Templates.
}
 
public ISearchResults search(String search, SearchTypeEnum searchType, int page, int maxResults, UserSession userSession) {
return null; //To change body of implemented methods use File | Settings | File Templates.
}
 
public int countToDo(UserSession userSession) {
return 0; //To change body of implemented methods use File | Settings | File Templates.
}
 
public IToDoCat getToDo(UserSession userSession) {
return null; //To change body of implemented methods use File | Settings | File Templates.
}
}
/impl/src/java/pt/estgp/estgweb/services/blogs/LoadBlogService.java
New file
0,0 → 1,34
package pt.estgp.estgweb.services.blogs;
 
import pt.utl.ist.berserk.logic.serviceManager.IService;
import pt.estgp.estgweb.domain.views.BlogView;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.services.expceptions.ServiceException;
import org.apache.log4j.Logger;
 
/*
* @author Goncalo Luiz gedl [AT] rnl [DOT] ist [DOT] utl [DOT] pt
*
*
* Created at 17/Out/2003 , 23:45:24
*
*/
/**
* @author Jorge Machado
*
*
* Created at 17/Out/2003 , 23:45:24
*
*/
public class LoadBlogService implements IService
{
 
private static final Logger logger = Logger.getLogger(LoadBlogService.class);
 
public BlogView run(Long id, UserSession userSession) throws ServiceException
{
DaoFactory.getBlogDaoImpl().get(id);
return new BlogView(DaoFactory.getBlogDaoImpl().get(id));
}
}
/impl/src/java/pt/estgp/estgweb/services/blogs/CreateBlogService.java
New file
0,0 → 1,41
package pt.estgp.estgweb.services.blogs;
 
import pt.utl.ist.berserk.logic.serviceManager.IService;
import pt.estgp.estgweb.services.expceptions.ServiceException;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.Blog;
import pt.estgp.estgweb.domain.views.BlogView;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.Globals;
import org.apache.log4j.Logger;
 
import java.util.Date;
 
/*
* @author Goncalo Luiz gedl [AT] rnl [DOT] ist [DOT] utl [DOT] pt
*
*
* Created at 17/Out/2003 , 23:45:24
*
*/
/**
* @author Jorge Machado
*
*
* Created at 17/Out/2003 , 23:45:24
*
*/
public class CreateBlogService implements IService
{
private static final Logger logger = Logger.getLogger(CreateBlogService.class);
 
public BlogView run(Blog b, UserSession userSession) throws ServiceException
{
if(b.getTargetRoles() == null || b.getTargetRoles().length() == 0)
b.setTargetRoles(Globals.ALL_ROLE);
b.setOwner(userSession.getUser());
b.setSaveDate(new Date());
DaoFactory.getBlogDaoImpl().save(b);
return new BlogView(b);
}
}
/impl/src/java/pt/estgp/estgweb/services/common/ISearchResults.java
New file
0,0 → 1,16
package pt.estgp.estgweb.services.common;
 
import java.util.List;
 
/**
* @author Jorge Machado
* @date 24/Abr/2008
* @time 14:57:52
* @see pt.estgp.estgweb.services.common
*/
public interface ISearchResults
{
public ModuleEnum getModule();
public List<IResult> getResults();
public int getTotalResults();
}
/impl/src/java/pt/estgp/estgweb/services/common/impl/CommonSearchResults.java
New file
0,0 → 1,45
package pt.estgp.estgweb.services.common.impl;
 
import pt.estgp.estgweb.services.common.ICommonSearchResults;
import pt.estgp.estgweb.services.common.ISearchResults;
 
import java.util.List;
 
/**
* @author Jorge Machado
* @date 24/Abr/2008
* @time 15:51:32
* @see pt.estgp.estgweb.services.common.impl
*/
public class CommonSearchResults implements ICommonSearchResults
{
 
private List<ISearchResults> results;
private int totalResults = 0;
 
public List<ISearchResults> getSearchResults()
{
return results;
}
 
public int getTotalResults()
{
return totalResults;
}
 
public void setResults(List<ISearchResults> results)
{
this.results = results;
}
 
public void setTotalResults(int totalResults)
{
this.totalResults = totalResults;
}
 
public void addMoreResults(int totalResults)
{
this.totalResults += totalResults;
}
}
/impl/src/java/pt/estgp/estgweb/services/common/impl/DefaultToDoCat.java
New file
0,0 → 1,32
package pt.estgp.estgweb.services.common.impl;
 
import pt.estgp.estgweb.services.common.IToDoCat;
 
/**
* @author Jorge Machado
* @date 24/Abr/2008
* @time 16:16:52
* @see pt.estgp.estgweb.services.common.impl
*/
public class DefaultToDoCat implements IToDoCat
{
private String url;
private int totalToDo;
 
 
public String getUrl() {
return url;
}
 
public void setUrl(String url) {
this.url = url;
}
 
public int getTotalToDo() {
return totalToDo;
}
 
public void setTotalToDo(int totalToDo) {
this.totalToDo = totalToDo;
}
}
/impl/src/java/pt/estgp/estgweb/services/common/impl/DefaultResult.java
New file
0,0 → 1,63
package pt.estgp.estgweb.services.common.impl;
 
import pt.estgp.estgweb.services.common.IResult;
 
/**
* @author Jorge Machado
* @date 24/Abr/2008
* @time 16:13:08
* @see pt.estgp.estgweb.services.common.impl
*/
public class DefaultResult implements IResult
{
 
private String title;
private String subTitle;
private String bestFragments;
private String text;
private String url;
 
 
public DefaultResult() {
}
 
public void setTitle(String title) {
this.title = title;
}
 
public void setUrl(String url) {
this.url = url;
}
 
public void setText(String text) {
this.text = text;
}
 
public void setBestFragments(String bestFragments) {
this.bestFragments = bestFragments;
}
 
public String getTitle() {
return title;
}
 
public String getSubTitle() {
return subTitle;
}
 
public void setSubTitle(String subTitle) {
this.subTitle = subTitle;
}
 
public String getBestFragments() {
return bestFragments;
}
 
public String getText() {
return text;
}
 
public String getUrl() {
return url;
}
}
/impl/src/java/pt/estgp/estgweb/services/common/impl/DefaultSearchResults.java
New file
0,0 → 1,57
package pt.estgp.estgweb.services.common.impl;
 
import pt.estgp.estgweb.services.common.ISearchResults;
import pt.estgp.estgweb.services.common.ModuleEnum;
import pt.estgp.estgweb.services.common.IResult;
 
import java.util.List;
import java.util.ArrayList;
 
/**
* @author Jorge Machado
* @date 24/Abr/2008
* @time 16:15:32
* @see pt.estgp.estgweb.services.common.impl
*/
public class DefaultSearchResults implements ISearchResults
{
private ModuleEnum module;
private List<IResult> results;
private int totalResults;
 
 
public ModuleEnum getModule() {
return module;
}
 
public void setModule(ModuleEnum module) {
this.module = module;
}
 
public List<IResult> getResults() {
return results;
}
 
public void setResults(List<IResult> results) {
this.results = results;
if(results != null)
this.totalResults = results.size();
else
this.totalResults = 0;
}
 
public int getTotalResults() {
return totalResults;
}
 
public void addResult(IResult result)
{
if(result != null)
totalResults++;
if(results == null)
results = new ArrayList<IResult>();
results.add(result);
}
 
 
}
/impl/src/java/pt/estgp/estgweb/services/common/IToDoCat.java
New file
0,0 → 1,13
package pt.estgp.estgweb.services.common;
 
/**
* @author Jorge Machado
* @date 24/Abr/2008
* @time 15:00:05
* @see pt.estgp.estgweb.services.common
*/
public interface IToDoCat
{
public String getUrl();
public int getTotalToDo();
}
/impl/src/java/pt/estgp/estgweb/services/common/CommonServicesManager.java
New file
0,0 → 1,213
package pt.estgp.estgweb.services.common;
 
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.views.AnnouncementView;
import pt.estgp.estgweb.web.utils.RequestUtils;
import pt.estgp.estgweb.web.exceptions.NoCookiesException;
import pt.estgp.estgweb.web.exceptions.NotAuthorizedException;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.services.common.impl.CommonSearchResults;
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.ServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.exceptions.ServiceManagerException;
import pt.utl.ist.berserk.logic.filterManager.exceptions.*;
 
import java.util.List;
import java.util.ArrayList;
 
import org.apache.log4j.Logger;
 
import javax.servlet.http.HttpServletRequest;
 
/**
* @author Jorge Machado
* @date 24/Abr/2008
* @time 14:55:22
* @see pt.estgp.estgweb.services.common
*/
public class CommonServicesManager {
 
 
private static final Logger logger = Logger.getLogger(CommonServicesManager.class);
 
private static CommonServicesManager ourInstance = new CommonServicesManager();
 
public static CommonServicesManager getInstance() {
return ourInstance;
}
 
private CommonServicesManager() {
}
 
/**
* @param request asking
* @param query to execute
* @param searchType see SearchTypeEnum
* @return Cluster of Results for each Module with total module results, only return modules with results
* @throws Throwable on notAuthorized or internal error
*/
public ICommonSearchResults search(HttpServletRequest request, String query, SearchTypeEnum searchType) throws Throwable {
return search(RequestUtils.getRequester(request), query, searchType);
}
 
/**
* @param requester asking
* @param query to execute
* @param searchType see SearchTypeEnum
* @return Cluster of Results for each Module with total module results, only return modules with results
* @throws Throwable on notAuthorized or internal error
*/
public ICommonSearchResults search(String requester, String query, SearchTypeEnum searchType) throws Throwable {
 
CommonSearchResults commonSearchResults = new CommonSearchResults();
List<ISearchResults> results = new ArrayList<ISearchResults>();
 
for (ModuleEnum module : ModuleEnum.values()) {
if (module.getServiceName() != null) {
ISearchResults iSearchResults = search(requester, query, searchType, module, 0);
if (iSearchResults.getTotalResults() > 0) {
results.add(iSearchResults);
commonSearchResults.addMoreResults(iSearchResults.getTotalResults());
}
}
}
commonSearchResults.setResults(results);
return commonSearchResults;
}
 
/**
* The service called inside implements method
* <p/>
* public ISearchResults search(String search, SearchTypeEnum searchType, int page, int maxResults, UserSession userSession);
*
* @param request asking
* @param query to execute
* @param searchType see SearchTypeEnum
* @param moduleKey to search in
* @param page of start result
* @return searchResults
* @throws Throwable on not authorized and internal error
*/
 
public ISearchResults search(HttpServletRequest request, String query, SearchTypeEnum searchType, String moduleKey, int page) throws Throwable {
return search(RequestUtils.getRequester(request), query, searchType, ModuleEnum.parse(moduleKey), page);
}
 
/**
* The service called inside implements method
* <p/>
* public ISearchResults search(String search, SearchTypeEnum searchType, int page, int maxResults, UserSession userSession);
*
* @param requester asking
* @param query to execute
* @param searchType see SearchTypeEnum
* @param moduleKey to search in
* @param page of start result
* @return searchResults
* @throws Throwable on not authorized and internal error
*/
 
public ISearchResults search(String requester, String query, SearchTypeEnum searchType, String moduleKey, int page) throws Throwable {
return search(requester, query, searchType, ModuleEnum.parse(moduleKey), page);
}
 
/**
* The service called inside implements method
* <p/>
* public ISearchResults search(String search, SearchTypeEnum searchType, int page, int maxResults, UserSession userSession);
*
* @param requester asking
* @param query to execute
* @param searchType see SearchTypeEnum
* @param moduleKey to search in
* @param page of start result
* @return searchResults
* @throws Throwable on not authorized and internal error
*/
public ISearchResults search(String requester, String query, SearchTypeEnum searchType, ModuleEnum moduleKey, int page) throws Throwable {
IServiceManager sm;
try {
sm = ServiceManager.getInstance();
String[] names = new String[]{};
Object[] args = new Object[]{query, searchType, page, Globals.SEARCH_MAX_RESULTS};
return (ISearchResults) sm.execute(requester, moduleKey.getServiceName(), "search", args, names);
}
catch (FilterRetrieveException e) {
logger.error(e, e);
throw new NotAuthorizedException(e.toString());
}
catch (Throwable e) {
logger.error(e, e);
throw e;
}
}
 
public List<IToDoCat> getToDoCats(String requester) throws Throwable {
List<IToDoCat> toDoCats = new ArrayList<IToDoCat>();
 
for (ModuleEnum module : ModuleEnum.values()) {
if (module.getServiceName() != null) {
IToDoCat toDoCat = getToDoCats(requester, module);
if (toDoCat != null) {
toDoCats.add(toDoCat);
 
}
}
}
return toDoCats;
}
 
public IToDoCat getToDoCats(HttpServletRequest request, String moduleKey) throws Throwable {
return getToDoCats(RequestUtils.getRequester(request), ModuleEnum.parse(moduleKey));
}
 
public IToDoCat getToDoCats(HttpServletRequest request, ModuleEnum module) throws Throwable {
return getToDoCats(RequestUtils.getRequester(request), module);
}
 
/**
*
* @param requester asking
* @param module to search
* @return Number of ToDos in given module
* @throws Throwable on Error or NotAuthorized Exception
*/
public IToDoCat getToDoCats(String requester, ModuleEnum module) throws Throwable {
IServiceManager sm;
try {
sm = ServiceManager.getInstance();
String[] names = new String[]{};
Object[] args = new Object[]{};
return (IToDoCat) sm.execute(requester, module.getServiceName(), "getToDo", args, names);
}
catch (FilterRetrieveException e) {
logger.error(e, e);
throw new NotAuthorizedException(e.toString());
}
catch (Throwable e) {
logger.error(e, e);
throw e;
}
}
 
 
public static void main(String[] args) throws Throwable
{
ICommonSearchResults commonSearchResults = new CommonServicesManager().search("18D0D23A7C07FF478CE8DAFEBA58D37A","teste",SearchTypeEnum.AllWords);
for(ISearchResults searchResults: commonSearchResults.getSearchResults())
{
System.out.println("-----------------------------------------------------");
System.out.println("Module" + searchResults.getModule().getMessageKey());
for(IResult result: searchResults.getResults())
{
System.out.println("");
System.out.println("\ttitle:" +result.getTitle());
System.out.println("\tsubTitle:" +result.getSubTitle());
System.out.println("\ttext:" +result.getText());
System.out.println("\turl:" + result.getUrl());
System.out.println("\tbestFragments:" + result.getBestFragments());
}
}
}
 
}
/impl/src/java/pt/estgp/estgweb/services/common/IResult.java
New file
0,0 → 1,16
package pt.estgp.estgweb.services.common;
 
/**
* @author Jorge Machado
* @date 24/Abr/2008
* @time 14:58:03
* @see pt.estgp.estgweb.services.common
*/
public interface IResult
{
public String getTitle();
public String getSubTitle();
public String getBestFragments();
public String getText();
public String getUrl();
}
/impl/src/java/pt/estgp/estgweb/services/common/ICommonSearchResults.java
New file
0,0 → 1,15
package pt.estgp.estgweb.services.common;
 
import java.util.List;
 
/**
* @author Jorge Machado
* @date 24/Abr/2008
* @time 14:56:54
* @see pt.estgp.estgweb.services.common
*/
public interface ICommonSearchResults
{
public List<ISearchResults> getSearchResults();
public int getTotalResults();
}
/impl/src/java/pt/estgp/estgweb/services/common/ModuleEnum.java
New file
0,0 → 1,46
package pt.estgp.estgweb.services.common;
 
/**
* @author Jorge Machado
* @date 24/Abr/2008
* @time 15:00:27
* @see pt.estgp.estgweb.services.common
*/
public enum ModuleEnum
{
 
Announcements("module.Announcements","AnnouncementsCommonServices"),
Events("module.Events",null),
Blogs("module.Blogs",null),
Proxy("module.Proxy",null);
 
String messageKey;
String serviceName;
 
 
private ModuleEnum(String messageKey, String serviceName)
{
this.messageKey = messageKey;
this.serviceName = serviceName;
}
 
public static ModuleEnum parse(String messageKey)
{
for(ModuleEnum module: values())
{
if(messageKey.equals(module.getMessageKey()))
return module;
}
return null;
}
 
public String getMessageKey()
{
return messageKey;
}
 
public String getServiceName()
{
return serviceName;
}
}
/impl/src/java/pt/estgp/estgweb/services/common/IModuleCommonServices.java
New file
0,0 → 1,20
package pt.estgp.estgweb.services.common;
 
import pt.estgp.estgweb.domain.UserSession;
 
/**
* @author Jorge Machado
* @date 24/Abr/2008
* @time 14:59:16
* @see pt.estgp.estgweb.services.common
*/
public interface IModuleCommonServices
{
public int countSearch(String search, SearchTypeEnum searchType, UserSession userSession);
public ISearchResults search(String search, SearchTypeEnum searchType, int page, int maxResults, UserSession userSession);
 
public int countToDo(UserSession userSession);
public IToDoCat getToDo(UserSession userSession);
 
}
/impl/src/java/pt/estgp/estgweb/services/common/SearchTypeEnum.java
New file
0,0 → 1,37
package pt.estgp.estgweb.services.common;
 
/**
* @author Jorge Machado
* @date 24/Abr/2008
* @time 15:00:50
* @see pt.estgp.estgweb.services.common
*/
public enum SearchTypeEnum
{
ExactPhrase("search.exactPhrase"),
AnyWord("search.anyWord"),
AllWords("search.allWords");
 
String messageKey;
 
 
private SearchTypeEnum(String messageKey)
{
this.messageKey = messageKey;
}
 
public static SearchTypeEnum parse(String messageKey)
{
for(SearchTypeEnum searchTypeEnum: values())
{
if(messageKey.equals(searchTypeEnum.getMessageKey()))
return searchTypeEnum;
}
return null;
}
 
public String getMessageKey()
{
return messageKey;
}
}
/impl/src/java/pt/estgp/estgweb/services/announcements/AnnouncementsCommonServices.java
New file
0,0 → 1,100
package pt.estgp.estgweb.services.announcements;
 
import pt.utl.ist.berserk.logic.serviceManager.IService;
import pt.estgp.estgweb.domain.views.AnnouncementView;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.Announcement;
import pt.estgp.estgweb.domain.UserImpl;
import pt.estgp.estgweb.domain.UserSessionImpl;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.services.common.*;
import pt.estgp.estgweb.services.common.impl.DefaultSearchResults;
import pt.estgp.estgweb.services.common.impl.DefaultResult;
import pt.estgp.estgweb.Globals;
import org.apache.log4j.Logger;
 
import java.io.Serializable;
import java.util.List;
import java.util.ArrayList;
 
import jomm.dao.impl.AbstractDao;
 
/*
* @author Goncalo Luiz gedl [AT] rnl [DOT] ist [DOT] utl [DOT] pt
*
*
* Created at 17/Out/2003 , 23:45:24
*
*/
/**
* @author Jorge Machado
*
*
* Created at 17/Out/2003 , 23:45:24
*
*/
public class AnnouncementsCommonServices implements IService, IModuleCommonServices
{
private static final Logger logger = Logger.getLogger(AnnouncementsCommonServices.class);
 
public int countSearch(String search, SearchTypeEnum searchType, UserSession userSession)
{
return 0; //To change body of implemented methods use File | Settings | File Templates.
}
 
public ISearchResults search(String search, SearchTypeEnum searchType, int page, int maxResults, UserSession userSession)
{
DefaultSearchResults searchResults = new DefaultSearchResults();
searchResults.setModule(ModuleEnum.Announcements);
List<String> roles;
if(userSession == null || userSession.getUser() == null || ((UserImpl)userSession.getUser()).getRolesList() == null || ((UserImpl)userSession.getUser()).getRolesList().size() == 0)
{
roles = new ArrayList<String>();
roles.add(Globals.ALL_ROLE);
}
else
roles = ((UserImpl)userSession.getUser()).getRolesList();
 
List<Announcement> announcements = DaoFactory.getAnnouncementDaoImpl().searchAnnouncements(search, searchType, maxResults, page, roles,null);
if(announcements == null)
return searchResults;
for(Announcement a: announcements)
{
DefaultResult defaultResult = new DefaultResult();
defaultResult.setTitle(a.getTitle());
defaultResult.setSubTitle(a.getType());
defaultResult.setText(a.getText());
defaultResult.setUrl("/loadAnnouncement.do?id=" + a.getId()+"&dispatch=load");
searchResults.addResult(defaultResult);
}
return searchResults;
}
 
public int countToDo(UserSession userSession)
{
return 0; //To change body of implemented methods use File | Settings | File Templates.
}
 
public IToDoCat getToDo(UserSession userSession)
{
return null; //To change body of implemented methods use File | Settings | File Templates.
}
 
public static void main(String[] args)
{
AbstractDao.getCurrentSession().beginTransaction();
UserSession sess = new UserSessionImpl();
sess.setUser(new UserImpl());
sess.getUser().setRoles("all");
ISearchResults searchResults = new AnnouncementsCommonServices().search("teste",SearchTypeEnum.AllWords,0,10,sess);
for(IResult result: searchResults.getResults())
{
System.out.println("title:" +result.getTitle());
System.out.println("subTitle:" +result.getSubTitle());
System.out.println("text:" +result.getText());
System.out.println("url" + result.getUrl());
System.out.println("bestFragments" + result.getBestFragments());
}
AbstractDao.commit();
}
}
/impl/src/java/pt/estgp/estgweb/domain/UserImpl.java
59,17 → 59,14
*/
public List<String> getOwnerRoles()
{
if(getRoles() == null)
return null;
String[] roles = getRoles().split(",");
List<String> l = new ArrayList<String>();
for(String role: roles)
{
l.add(role);
}
return l;
return getRolesList();
}
 
public List<String> getRolesList()
{
return RoleManager.getRolesFromSerial(getRoles());
}
 
public Serializable getSerializable()
{
return getId();
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/AnnouncementDaoImpl.java
3,6 → 3,8
import pt.estgp.estgweb.domain.Announcement;
import pt.estgp.estgweb.domain.User;
import pt.estgp.estgweb.domain.GenericUser;
import pt.estgp.estgweb.services.common.ISearchResults;
import pt.estgp.estgweb.services.common.SearchTypeEnum;
 
import java.util.List;
import java.util.ArrayList;
22,115 → 24,105
* @time 2:51:06
* @see pt.estgp.estgweb.domain.dao.impl
*/
public class AnnouncementDaoImpl extends AnnouncementDao
{
public static AnnouncementDaoImpl getInstance()
{
public class AnnouncementDaoImpl extends AnnouncementDao {
public static AnnouncementDaoImpl getInstance() {
if (myInstance == null)
myInstance = new AnnouncementDaoImpl();
return (AnnouncementDaoImpl) myInstance;
}
 
public List<Announcement> findAnnouncements(int maxAnnouncements,List<String> roles,String subTarget)
{
if(roles == null)
{
public List<Announcement> findAnnouncements(int maxAnnouncements, List<String> roles, String subTarget) {
if (roles == null) {
roles = new ArrayList<String>();
roles.add("all");
}
Criteria criteria = createCriteria();
Criterion co = null;
for(String role: roles)
{
Criterion cor = like("targetRoles","%" + role + "%");
if(co == null)
for (String role : roles) {
Criterion cor = like("targetRoles", "%" + role + "%");
if (co == null)
co = cor;
else
co = or(co,cor);
co = or(co, cor);
}
Criterion coSubTargets=null;
Criterion coSubTargets = null;
 
if(subTarget==null)
{
coSubTargets=isNull("subTargets");
if (subTarget == null) {
coSubTargets = isNull("subTargets");
}
else
{
coSubTargets =eq("subTargets",subTarget);
else {
coSubTargets = eq("subTargets", subTarget);
}
MyCalendar cNow = new MyCalendar();
MyCalendar calendarWithOutTime = new MyCalendar(cNow.getYear(),cNow.getMonth(),cNow.getDay());
MyCalendar calendarWithOutTime = new MyCalendar(cNow.getYear(), cNow.getMonth(), cNow.getDay());
Date now = calendarWithOutTime.getTime();
criteria.add(co)
.add(or(or(lt("startDate",now),eq("startDate",now)),isNull("startDate")))
.add(or(or(gt("expireDate",now),eq("expireDate",now)),isNull("expireDate")))
.add(eq("status",true))
.add(or(or(lt("startDate", now), eq("startDate", now)), isNull("startDate")))
.add(or(or(gt("expireDate", now), eq("expireDate", now)), isNull("expireDate")))
.add(eq("status", true))
.add(coSubTargets)
.setMaxResults(maxAnnouncements)
.addOrder(Order.desc("saveDate"));
return criteria.list();
}
 
public List<Announcement> findAnnouncements(int maxAnnouncements,List<String> roles,String type,String subTarget)
{
return findAnnouncements(0,maxAnnouncements,roles, type,subTarget);
public List<Announcement> findAnnouncements(int maxAnnouncements, List<String> roles, String type, String subTarget) {
return findAnnouncements(0, maxAnnouncements, roles, type, subTarget);
}
public List<Announcement> findAnnouncements(int startPage, int maxAnnouncements,List<String> roles,String type,String subTarget)
{
Criteria criteria = createMaxAnnouncementsRolesTypeCriteria(maxAnnouncements, roles,type,subTarget);
return criteria.setFirstResult(maxAnnouncements*startPage).list();
 
public List<Announcement> findAnnouncements(int startPage, int maxAnnouncements, List<String> roles, String type, String subTarget) {
Criteria criteria = createMaxAnnouncementsRolesTypeCriteria(maxAnnouncements, roles, type, subTarget);
return criteria.setFirstResult(maxAnnouncements * startPage).list();
}
 
public int countAnnouncements(int maxAnnouncements,List<String> roles,String type,String subTarget)
{
Criteria criteria = createMaxAnnouncementsRolesTypeCriteria(Integer.MAX_VALUE, roles,type,subTarget);
public int countAnnouncements(int maxAnnouncements, List<String> roles, String type, String subTarget) {
Criteria criteria = createMaxAnnouncementsRolesTypeCriteria(Integer.MAX_VALUE, roles, type, subTarget);
return criteria.list().size();
}
 
private Criteria createMaxAnnouncementsRolesTypeCriteria(int maxAnnouncements,List<String> roles,String type,String subTarget)
{
if(roles == null)
{
private Criteria createMaxAnnouncementsRolesTypeCriteria(int maxAnnouncements, List<String> roles, String type, String subTarget) {
return createMaxAnnouncementsPageRolesTypeCriteria(0, maxAnnouncements, roles, type, subTarget);
}
 
private Criteria createMaxAnnouncementsPageRolesTypeCriteria(int page, int maxAnnouncements, List<String> roles, String type, String subTarget) {
if (roles == null) {
roles = new ArrayList<String>();
roles.add("all");
}
Criteria criteria = createCriteria();
Criterion coRole = null;
for(String role: roles)
{
Criterion cor = like("targetRoles","%" + role + "%");
if(coRole == null)
for (String role : roles) {
Criterion cor = like("targetRoles", "%" + role + "%");
if (coRole == null)
coRole = cor;
else
coRole = or(coRole,cor);
coRole = or(coRole, cor);
}
Criterion coSubTargets=null;
Criterion coSubTargets = null;
 
if(subTarget==null)
{
coSubTargets=isNull("subTargets");
if (subTarget == null) {
coSubTargets = isNull("subTargets");
}
else
{
coSubTargets =eq("subTargets",subTarget);
else {
coSubTargets = eq("subTargets", subTarget);
}
Criterion coType=eq("type",type);
if(type != null)
criteria.add(eq("type", type));
MyCalendar cNow = new MyCalendar();
MyCalendar calendarWithOutTime = new MyCalendar(cNow.getYear(),cNow.getMonth(),cNow.getDay());
MyCalendar calendarWithOutTime = new MyCalendar(cNow.getYear(), cNow.getMonth(), cNow.getDay());
Date now = calendarWithOutTime.getTime();
criteria.add(coRole)
.add(coType)
.add(or(or(lt("startDate",now),eq("startDate",now)),isNull("startDate")))
.add(or(or(gt("expireDate",now),eq("expireDate",now)),isNull("expireDate")))
.add(eq("status",true))
.add(or(or(lt("startDate", now), eq("startDate", now)), isNull("startDate")))
.add(or(or(gt("expireDate", now), eq("expireDate", now)), isNull("expireDate")))
.add(eq("status", true))
.add(coSubTargets)
.setFirstResult(page * maxAnnouncements)
.setMaxResults(maxAnnouncements)
.addOrder(Order.desc("saveDate"));
return criteria;
}
 
 
/* public static void main(String[] args)
/* public static void main(String[] args)
{
AbstractDao.getCurrentSession().beginTransaction();
List<String> roles = new ArrayList<String>();
150,4 → 142,35
}
AbstractDao.getCurrentSession().beginTransaction().commit();
}*/
 
public List<Announcement> searchAnnouncements(String query, SearchTypeEnum searchTypeEnum, int maxAnnouncements, int page, List<String> roles, String subTarget) {
 
Criterion c = null;
if (searchTypeEnum == SearchTypeEnum.ExactPhrase)
c = or(like("text", "%" + query + "%"), like("title", "%" + query + "%"));
else if (searchTypeEnum == SearchTypeEnum.AllWords) {
String[] fields = query.split(" ");
for (String field : fields) {
if (c == null)
c = or(like("text", "%" + field + "%"), like("title", "%" + field + "%"));
else
c = and(c, or(like("text", "%" + field + "%"), like("title", "%" + field + "%")));
}
 
}
else {
String[] fields = query.split(" ");
for (String field : fields) {
if (c == null)
c = or(like("text", "%" + field + "%"), like("title", "%" + field + "%"));
else
c = or(c, or(like("text", "%" + field + "%"), like("title", "%" + field + "%")));
}
}
 
Criteria criteria = createMaxAnnouncementsPageRolesTypeCriteria(page, maxAnnouncements, roles, null, null);
criteria.add(c);
return criteria.list();
}
 
}
/impl/src/java/pt/estgp/estgweb/web/form/AddRolesForm.java
1,8 → 1,6
package pt.estgp.estgweb.web.form;
 
import pt.estgp.estgweb.domain.views.BlogView;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.web.form.blog.BlogForm;
 
import java.util.List;
 
10,7 → 8,7
* @author Jorge Machado
* @date 21/Abr/2008
* @time 14:28:59
* @see pt.estgp.estgweb.web.form.blog
* @see pt.estgp.estgweb.web.form.blogs
*/
public class AddRolesForm extends ApplicationForm
{
/impl/src/java/pt/estgp/estgweb/web/form/blogs/BlogForm.java
New file
0,0 → 1,36
package pt.estgp.estgweb.web.form.blogs;
 
import pt.estgp.estgweb.domain.views.BlogView;
import pt.estgp.estgweb.web.form.AddRolesForm;
 
import org.apache.struts.upload.FormFile;
 
/**
* @author Jorge Machado
* @date 21/Abr/2008
* @time 14:28:59
* @see pt.estgp.estgweb.web.form.blogs
*/
public class BlogForm extends AddRolesForm
{
private BlogView blogView = new BlogView();
 
private FormFile image;
 
public BlogView getBlogView() {
return blogView;
}
 
public void setBlogView(BlogView blogView) {
this.blogView = blogView;
}
 
public FormFile getImage() {
return image;
}
 
public void setImage(FormFile image) {
this.image = image;
}
}
/impl/src/java/pt/estgp/estgweb/web/controllers/blogs/BlogsController.java
New file
0,0 → 1,111
package pt.estgp.estgweb.web.controllers.blogs;
 
import pt.estgp.estgweb.web.controllers.AddRolesController;
import pt.estgp.estgweb.web.utils.RequestUtils;
import pt.estgp.estgweb.web.form.blogs.BlogForm;
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.views.BlogView;
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.ServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.exceptions.FilterChainFailedException;
import org.apache.log4j.Logger;
import org.apache.struts.action.*;
import org.apache.struts.upload.FormFile;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import java.io.InputStream;
import java.io.ByteArrayOutputStream;
import java.util.Date;
 
/**
* @author Jorge Machado
* @date 26/Fev/2008
* @time 18:01:54
* @see pt.estgp.estgweb.web
*/
public class BlogsController extends AddRolesController {
 
private static final Logger logger = Logger.getLogger(BlogsController.class);
 
public ActionForward save(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Throwable, ServletException {
try {
BlogForm blogForm = (BlogForm) form;
if (blogForm.getBlogView().getId() <= 0) {
Blog blog = DomainObjectFactory.createBlogImpl();
blogForm.getBlogView().persistViewInObject(blog);
IServiceManager sm = ServiceManager.getInstance();
 
if (blogForm.getImage().getFileSize() != 0) {
FormFile image = blogForm.getImage();
InputStream stream = image.getInputStream();
ByteArrayOutputStream b = new ByteArrayOutputStream();
int readedBytes;
byte[] buf = new byte[1024];
while ((readedBytes = stream.read(buf)) > 0) {
b.write(buf, 0, readedBytes);
}
b.close();
Image i = DomainObjectFactory.createImageImpl();
i.setImage(b.toByteArray());
i.setContentType(image.getContentType());
i.setSize(image.getFileSize());
i.setDescription(blog.getTitle());
i.setName(image.getFileName());
i.setSaveDate(new Date());
blog.setImage(i);
}
String[] names = new String[]{"object"};
Object[] args = new Object[]{blog};
BlogView bV = (BlogView) sm.execute(RequestUtils.getRequester(request), "CreateBlog", args, names);
addMessage(request, "blog.created.success", "" + bV.getId());
request.setAttribute("BlogView", bV);
return mapping.findForward("success");
} else {
BlogView bV = blogForm.getBlogView();
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{"object"};
Object[] args = new Object[]{bV};
bV = (BlogView) sm.execute(RequestUtils.getRequester(request), "EditBlog", args, names);
addMessage(request, "blog.edited.success", "" + bV.getId());
return mapping.findForward("success");
}
}
catch (FilterChainFailedException e) {
return mapping.findForward("error401");
}
catch (Throwable e) {
logger.error(e, e);
throw e;
}
}
 
public ActionForward load(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Throwable, ServletException {
try
{
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{"serializable"};
Object[] args = new Object[]{Long.parseLong(request.getParameter("id"))};
BlogView bV = (BlogView) sm.execute(RequestUtils.getRequester(request), "LoadBlog", args, names);
request.setAttribute("BlogView", bV);
return mapping.findForward("success");
}
catch (FilterChainFailedException e) {
return mapping.findForward("error401");
}
catch (Throwable e) {
logger.error(e, e);
throw e;
}
 
}
}