Thread: [Edevsagetools-commit] SF.net SVN: edevsagetools: [44] trunk/synchro
Status: Beta
Brought to you by:
avdyk
From: <av...@us...> - 2007-04-15 15:07:21
|
Revision: 44 http://svn.sourceforge.net/edevsagetools/?rev=44&view=rev Author: avdyk Date: 2007-04-15 08:07:19 -0700 (Sun, 15 Apr 2007) Log Message: ----------- added new servlet and dao classes Modified Paths: -------------- trunk/synchro/webapp/src/main/java/be/edev/sagetools/synchro/servlets/dao/DAOFactory.java trunk/synchro/webapp/src/main/java/be/edev/sagetools/synchro/servlets/dao/hibernate/DAOFactoryHibernateImpl.java trunk/synchro/webapp/src/main/webapp/WEB-INF/web.xml Added Paths: ----------- trunk/synchro/core/src/main/java/be/edev/sagetools/beans/SageItem.java trunk/synchro/webapp/src/main/java/be/edev/sagetools/synchro/servlets/DeleteItemServlet.java trunk/synchro/webapp/src/main/java/be/edev/sagetools/synchro/servlets/ListSageItemsServlet.java trunk/synchro/webapp/src/main/java/be/edev/sagetools/synchro/servlets/dao/DeleteItemDAO.java trunk/synchro/webapp/src/main/java/be/edev/sagetools/synchro/servlets/dao/SageItemDAO.java trunk/synchro/webapp/src/main/java/be/edev/sagetools/synchro/servlets/dao/hibernate/DeleteItemDAOImpl.java trunk/synchro/webapp/src/main/java/be/edev/sagetools/synchro/servlets/dao/hibernate/SageItemDAOImpl.java Added: trunk/synchro/core/src/main/java/be/edev/sagetools/beans/SageItem.java =================================================================== --- trunk/synchro/core/src/main/java/be/edev/sagetools/beans/SageItem.java (rev 0) +++ trunk/synchro/core/src/main/java/be/edev/sagetools/beans/SageItem.java 2007-04-15 15:07:19 UTC (rev 44) @@ -0,0 +1,44 @@ +package be.edev.sagetools.beans; + +import java.util.Date; + +/** + * This class represent a Sage Item with id and modification date. + */ +public class SageItem { + + private String id; + + private Date cbmodification; + + public SageItem() { + super(); + } + + public SageItem(String id, Date cbmodification) { + super(); + this.id = id; + this.cbmodification = cbmodification; + } + + + public Date getCbmodification() { + return cbmodification; + } + + + public void setCbmodification(Date cbmodification) { + this.cbmodification = cbmodification; + } + + + public String getId() { + return id; + } + + + public void setId(String id) { + this.id = id; + } + +} Added: trunk/synchro/webapp/src/main/java/be/edev/sagetools/synchro/servlets/DeleteItemServlet.java =================================================================== --- trunk/synchro/webapp/src/main/java/be/edev/sagetools/synchro/servlets/DeleteItemServlet.java (rev 0) +++ trunk/synchro/webapp/src/main/java/be/edev/sagetools/synchro/servlets/DeleteItemServlet.java 2007-04-15 15:07:19 UTC (rev 44) @@ -0,0 +1,104 @@ +package be.edev.sagetools.synchro.servlets; + +import java.io.IOException; +import java.io.PrintWriter; + +import javax.servlet.ServletConfig; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import be.edev.sagetools.beans.Article; +import be.edev.sagetools.beans.ArticleGlossaire; +import be.edev.sagetools.beans.Condition; +import be.edev.sagetools.beans.Famille; +import be.edev.sagetools.beans.Glossaire; +import be.edev.sagetools.beans.Promo; +import be.edev.sagetools.synchro.servlets.dao.DAOException; +import be.edev.sagetools.synchro.servlets.dao.DAOFactory; +import be.edev.sagetools.synchro.servlets.dao.DeleteItemDAO; + +@SuppressWarnings("serial") +public class DeleteItemServlet extends HttpServlet { + + protected Log log4 = LogFactory.getLog(DeleteItemServlet.class); + + public DeleteItemServlet() { + super(); + } + + /** + * Nothing to do to init the servlet. + * + * @param config + * the servletconfig + * @throws ServletException + * @see javax.servlet.GenericServlet#init(javax.servlet.ServletConfig) + */ + public void init(ServletConfig config) throws ServletException { + super.init(config); + } + + /** + * The request can be on: articles, glossaires, familles, conditions, promos, + * (pas certains: articlesglossaires) then the primary key + * + * @param request + * @param response + * @throws ServletException + * @throws IOException + * @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, + * javax.servlet.http.HttpServletResponse) + */ + protected void doGet(HttpServletRequest request, HttpServletResponse response) + throws IOException { + String req = request.getPathInfo(); + boolean notFound = false; + boolean notDeleted = false; + Throwable t = null; + if (req != null && req.split("/").length == 3) { + String type = req.split("/")[1]; + String primaryKey = req.split("/")[2]; + try { + DeleteItemDAO delete = DAOFactory.getInstance().getDeleteItemDAO(); + if ("articles".equals(type)) { + delete.delete(Article.class, primaryKey); + } else if ("familles".equals(type)) { + delete.delete(Famille.class, primaryKey); + } else if ("glossaires".equals(type)) { + delete.delete(Glossaire.class, primaryKey); + } else if ("conditions".equals(type)) { + delete.delete(Condition.class, primaryKey); + } else if ("promos".equals(type)) { + delete.delete(Promo.class, primaryKey); + } else if ("articlesglossaires".equals(type)) { + delete.delete(ArticleGlossaire.class, primaryKey); + } else { + notFound = true; + } + } catch (DAOException e) { + this.log4.error("Problem with SageItemDAO", e); + t = e; + notDeleted = true; + } + } else { + notFound = true; + } + if (notFound) { + String usage = "Possible values: articles, familles, glossaires, " + + "conditions, promos, articlesglossaires. Followed by the primary key"; + response.sendError(404, usage); + } else if (notDeleted) { + response.sendError(500, "Item not deleted: " + t.getMessage()); + } else { + response.setContentType("text/plain"); + PrintWriter out = response.getWriter(); + out.println("Item deleted"); + } + } + +} Added: trunk/synchro/webapp/src/main/java/be/edev/sagetools/synchro/servlets/ListSageItemsServlet.java =================================================================== --- trunk/synchro/webapp/src/main/java/be/edev/sagetools/synchro/servlets/ListSageItemsServlet.java (rev 0) +++ trunk/synchro/webapp/src/main/java/be/edev/sagetools/synchro/servlets/ListSageItemsServlet.java 2007-04-15 15:07:19 UTC (rev 44) @@ -0,0 +1,112 @@ +package be.edev.sagetools.synchro.servlets; + +import java.io.IOException; +import java.io.PrintWriter; +import java.util.List; + +import javax.servlet.ServletConfig; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import be.edev.sagetools.beans.SageItem; +import be.edev.sagetools.synchro.servlets.dao.DAOException; +import be.edev.sagetools.synchro.servlets.dao.DAOFactory; +import be.edev.sagetools.synchro.servlets.dao.SageItemDAO; + +@SuppressWarnings("serial") +public class ListSageItemsServlet extends HttpServlet { + + protected Log log4 = LogFactory.getLog(ListSageItemsServlet.class); + + public ListSageItemsServlet() { + super(); + } + + /** + * Nothing to do to init the servlet. + * + * @param config + * the servletconfig + * @throws ServletException + * @see javax.servlet.GenericServlet#init(javax.servlet.ServletConfig) + */ + public void init(ServletConfig config) throws ServletException { + super.init(config); + } + + /** + * The request can be on: articles, glossaires, familles, conditions, promos, + * (pas certains: articlesglossaires) + * + * @param request + * @param response + * @throws ServletException + * @throws IOException + * @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, + * javax.servlet.http.HttpServletResponse) + */ + protected void doGet(HttpServletRequest request, HttpServletResponse response) + throws IOException { + String type = request.getPathInfo(); + boolean notFound = false; + List<SageItem> list = null; + if (type != null && type.split("/").length >= 2) { + type = type.split("/")[1]; + try { + SageItemDAO sageItemDAO = DAOFactory.getInstance().getSageItemDAO(); + if ("articles".equals(type)) { + list = sageItemDAO.getArticles(); + } else if ("familles".equals(type)) { + list = sageItemDAO.getFamilles(); + } else if ("glossaires".equals(type)) { + list = sageItemDAO.getGlossaires(); + } else if ("conditions".equals(type)) { + list = sageItemDAO.getConditions(); + } else if ("promos".equals(type)) { + list = sageItemDAO.getPromos(); + } else if ("articlesglossaires".equals(type)) { + list = sageItemDAO.getArticlesGlossaires(); + } else { + notFound = true; + } + } catch (DAOException e) { + this.log4.error("Problem with SageItemDAO", e); + } + } else { + notFound = true; + } + if (notFound) { + String usage = "Possible values: articles, familles, glossaires, " + + "conditions, promos, articlesglossaires"; + response.sendError(404, usage); + } else if (list == null) { + response.sendError(500, "Empty list of items"); + } else { + // response.setContentType("text/plain"); + // PrintWriter out = response.getWriter(); + // for (SageItem element : list) { + // out.println(element.getId() + "|" + // + element.getCbmodification().getTime()); + // } + // XML Response + response.setContentType("text/xml"); +// response.setCharacterEncoding("utf-8"); + PrintWriter out = response.getWriter(); +// out.println("<?xml version=\"1.0\" encoding=\"utf-8\"?>"); + out.println("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>"); + out.println("<items table=\"" + type + "\">"); + out.println("<!-- éêàçèù! -->"); + for (SageItem element : list) { + out.println(" <item id=\"" + element.getId() + "\" date=\"" + + element.getCbmodification().getTime() + "\" />"); + } + out.println("</items>"); + } + } + +} Modified: trunk/synchro/webapp/src/main/java/be/edev/sagetools/synchro/servlets/dao/DAOFactory.java =================================================================== --- trunk/synchro/webapp/src/main/java/be/edev/sagetools/synchro/servlets/dao/DAOFactory.java 2007-03-19 13:59:03 UTC (rev 43) +++ trunk/synchro/webapp/src/main/java/be/edev/sagetools/synchro/servlets/dao/DAOFactory.java 2007-04-15 15:07:19 UTC (rev 44) @@ -58,4 +58,8 @@ public abstract ManagerDAO getManagerDAO(); + public abstract SageItemDAO getSageItemDAO(); + + public abstract DeleteItemDAO getDeleteItemDAO(); + } Added: trunk/synchro/webapp/src/main/java/be/edev/sagetools/synchro/servlets/dao/DeleteItemDAO.java =================================================================== --- trunk/synchro/webapp/src/main/java/be/edev/sagetools/synchro/servlets/dao/DeleteItemDAO.java (rev 0) +++ trunk/synchro/webapp/src/main/java/be/edev/sagetools/synchro/servlets/dao/DeleteItemDAO.java 2007-04-15 15:07:19 UTC (rev 44) @@ -0,0 +1,10 @@ +package be.edev.sagetools.synchro.servlets.dao; + +import java.io.Serializable; + + +public interface DeleteItemDAO { + + public void delete(Class klass, Serializable primaryKey) throws DAOException; + +} Added: trunk/synchro/webapp/src/main/java/be/edev/sagetools/synchro/servlets/dao/SageItemDAO.java =================================================================== --- trunk/synchro/webapp/src/main/java/be/edev/sagetools/synchro/servlets/dao/SageItemDAO.java (rev 0) +++ trunk/synchro/webapp/src/main/java/be/edev/sagetools/synchro/servlets/dao/SageItemDAO.java 2007-04-15 15:07:19 UTC (rev 44) @@ -0,0 +1,22 @@ +package be.edev.sagetools.synchro.servlets.dao; + +import java.util.List; + +import be.edev.sagetools.beans.SageItem; + + +public interface SageItemDAO { + + public List<SageItem> getArticles() throws DAOException; + + public List<SageItem> getFamilles() throws DAOException; + + public List<SageItem> getGlossaires() throws DAOException; + + public List<SageItem> getConditions() throws DAOException; + + public List<SageItem> getPromos() throws DAOException; + + public List<SageItem> getArticlesGlossaires() throws DAOException; + +} Modified: trunk/synchro/webapp/src/main/java/be/edev/sagetools/synchro/servlets/dao/hibernate/DAOFactoryHibernateImpl.java =================================================================== --- trunk/synchro/webapp/src/main/java/be/edev/sagetools/synchro/servlets/dao/hibernate/DAOFactoryHibernateImpl.java 2007-03-19 13:59:03 UTC (rev 43) +++ trunk/synchro/webapp/src/main/java/be/edev/sagetools/synchro/servlets/dao/hibernate/DAOFactoryHibernateImpl.java 2007-04-15 15:07:19 UTC (rev 44) @@ -8,9 +8,11 @@ import be.edev.sagetools.synchro.servlets.dao.DAOException; import be.edev.sagetools.synchro.servlets.dao.DAOFactory; +import be.edev.sagetools.synchro.servlets.dao.DeleteItemDAO; import be.edev.sagetools.synchro.servlets.dao.ManagerDAO; import be.edev.sagetools.synchro.servlets.dao.ObjetParIdDAO; import be.edev.sagetools.synchro.servlets.dao.ObjetParNomDAO; +import be.edev.sagetools.synchro.servlets.dao.SageItemDAO; import be.edev.sagetools.synchro.servlets.dao.SynchroNettoyageDAO; import be.edev.sagetools.synchro.servlets.dao.SynchroSaveDAO; @@ -75,4 +77,14 @@ return new ManagerDAOImpl(this.sessionFactory); } + @Override + public SageItemDAO getSageItemDAO() { + return new SageItemDAOImpl(this.sessionFactory); + } + + @Override + public DeleteItemDAO getDeleteItemDAO() { + return new DeleteItemDAOImpl(this.sessionFactory); + } + } Added: trunk/synchro/webapp/src/main/java/be/edev/sagetools/synchro/servlets/dao/hibernate/DeleteItemDAOImpl.java =================================================================== --- trunk/synchro/webapp/src/main/java/be/edev/sagetools/synchro/servlets/dao/hibernate/DeleteItemDAOImpl.java (rev 0) +++ trunk/synchro/webapp/src/main/java/be/edev/sagetools/synchro/servlets/dao/hibernate/DeleteItemDAOImpl.java 2007-04-15 15:07:19 UTC (rev 44) @@ -0,0 +1,51 @@ +package be.edev.sagetools.synchro.servlets.dao.hibernate; + +import java.io.Serializable; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.hibernate.HibernateException; +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.hibernate.Transaction; + +import be.edev.sagetools.synchro.servlets.dao.DAOException; +import be.edev.sagetools.synchro.servlets.dao.DeleteItemDAO; + +public class DeleteItemDAOImpl implements DeleteItemDAO { + + protected SessionFactory sessionFactory = null; + + private Log log = LogFactory.getLog(DeleteItemDAOImpl.class); + + public DeleteItemDAOImpl(SessionFactory f) { + super(); + this.sessionFactory = f; + } + + public void delete(Class klass, Serializable primaryKey) throws DAOException { + Session s = null; + try { + s = this.sessionFactory.openSession(); + Transaction t = s.beginTransaction(); + // loading the object + Object o = s.load(klass, primaryKey); + // and deleting it + s.delete(o); + t.commit(); + } catch (HibernateException e) { + this.log.error( + "Hibernate problem when deleting an item (object not found?)", e); + throw new DAOException(e); + } finally { + if (s != null && s.isOpen()) { + try { + s.close(); + } catch (HibernateException e) { + this.log.warn("Unabled to close Hibernate session", e); + } + } + } + } + +} Added: trunk/synchro/webapp/src/main/java/be/edev/sagetools/synchro/servlets/dao/hibernate/SageItemDAOImpl.java =================================================================== --- trunk/synchro/webapp/src/main/java/be/edev/sagetools/synchro/servlets/dao/hibernate/SageItemDAOImpl.java (rev 0) +++ trunk/synchro/webapp/src/main/java/be/edev/sagetools/synchro/servlets/dao/hibernate/SageItemDAOImpl.java 2007-04-15 15:07:19 UTC (rev 44) @@ -0,0 +1,144 @@ +package be.edev.sagetools.synchro.servlets.dao.hibernate; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.hibernate.HibernateException; +import org.hibernate.Session; +import org.hibernate.SessionFactory; + +import be.edev.sagetools.beans.Article; +import be.edev.sagetools.beans.ArticleGlossaire; +import be.edev.sagetools.beans.Condition; +import be.edev.sagetools.beans.Famille; +import be.edev.sagetools.beans.Glossaire; +import be.edev.sagetools.beans.Promo; +import be.edev.sagetools.beans.SageItem; +import be.edev.sagetools.synchro.servlets.dao.DAOException; +import be.edev.sagetools.synchro.servlets.dao.SageItemDAO; + +@SuppressWarnings("unchecked") +public class SageItemDAOImpl implements SageItemDAO { + + private SessionFactory factory; + + public static final Map<String, String> types = new HashMap<String, String>(); + + public SageItemDAOImpl(SessionFactory factory) { + this.factory = factory; + } + + public List<SageItem> getArticles() throws DAOException { + List<SageItem> list = null; + try { + Session s = this.factory.openSession(); + List<Article> origList = s.createCriteria(Article.class).list(); + list = new ArrayList<SageItem>(origList.size()); + for (Article origItem : origList) { + SageItem item = new SageItem(origItem.getReference(), origItem + .getCbDateModif()); + list.add(item); + } + s.close(); + } catch (HibernateException e) { + throw new DAOException(e); + } + return list; + } + + public List<SageItem> getArticlesGlossaires() throws DAOException { + List<SageItem> list = null; + try { + Session s = this.factory.openSession(); + List<ArticleGlossaire> origList = s.createCriteria(ArticleGlossaire.class).list(); + list = new ArrayList<SageItem>(origList.size()); + for (ArticleGlossaire origItem : origList) { + // verify that it's the good field: NUM + SageItem item = new SageItem(String.valueOf(origItem.getNum()), origItem + .getDateModif()); + list.add(item); + } + s.close(); + } catch (HibernateException e) { + throw new DAOException(e); + } + return list; + } + + public List<SageItem> getConditions() throws DAOException { + List<SageItem> list = null; + try { + Session s = this.factory.openSession(); + List<Condition> origList = s.createCriteria(Condition.class).list(); + list = new ArrayList<SageItem>(origList.size()); + for (Condition origItem : origList) { + // verify that it's the good field: CHAMP + SageItem item = new SageItem(String.valueOf(origItem.getChamp()), origItem + .getDateModif()); + list.add(item); + } + s.close(); + } catch (HibernateException e) { + throw new DAOException(e); + } + return list; + } + + public List<SageItem> getFamilles() throws DAOException { + List<SageItem> list = null; + try { + Session s = this.factory.openSession(); + List<Famille> origList = s.createCriteria(Famille.class).list(); + list = new ArrayList<SageItem>(origList.size()); + for (Famille origItem : origList) { + SageItem item = new SageItem(origItem.getCodeFamille(), origItem + .getDateModif()); + list.add(item); + } + s.close(); + } catch (HibernateException e) { + throw new DAOException(e); + } + return list; + } + + public List<SageItem> getGlossaires() throws DAOException { + List<SageItem> list = null; + try { + Session s = this.factory.openSession(); + List<Glossaire> origList = s.createCriteria(Glossaire.class).list(); + list = new ArrayList<SageItem>(origList.size()); + for (Glossaire origItem : origList) { + // verify that it's the good field: ID + SageItem item = new SageItem(String.valueOf(origItem.getId()), origItem + .getDateModif()); + list.add(item); + } + s.close(); + } catch (HibernateException e) { + throw new DAOException(e); + } + return list; + } + + public List<SageItem> getPromos() throws DAOException { + List<SageItem> list = null; + try { + Session s = this.factory.openSession(); + List<Promo> origList = s.createCriteria(Promo.class).list(); + list = new ArrayList<SageItem>(origList.size()); + for (Promo origItem : origList) { + SageItem item = new SageItem(origItem.getIntitule(), origItem + .getCbmodification()); + list.add(item); + } + s.close(); + } catch (HibernateException e) { + throw new DAOException(e); + } + return list; + } + +} Modified: trunk/synchro/webapp/src/main/webapp/WEB-INF/web.xml =================================================================== --- trunk/synchro/webapp/src/main/webapp/WEB-INF/web.xml 2007-03-19 13:59:03 UTC (rev 43) +++ trunk/synchro/webapp/src/main/webapp/WEB-INF/web.xml 2007-04-15 15:07:19 UTC (rev 44) @@ -6,14 +6,6 @@ <display-name>eDev Sage Tools - Synchro</display-name> -<!-- - <resource-ref> - <res-ref-name>jdbc/tobydb</res-ref-name> - <res-type>javax.sql.DataSource</res-type> - <res-auth>Container</res-auth> - </resource-ref> ---> - <servlet> <servlet-name>initservlet</servlet-name> <servlet-class>be.edev.sagetools.synchro.servlets.InitServlet</servlet-class> @@ -26,6 +18,18 @@ </servlet-class> </servlet> <servlet> + <servlet-name>listSageItems</servlet-name> + <servlet-class> + be.edev.sagetools.synchro.servlets.ListSageItemsServlet + </servlet-class> + </servlet> + <servlet> + <servlet-name>deleteItem</servlet-name> + <servlet-class> + be.edev.sagetools.synchro.servlets.DeleteItemServlet + </servlet-class> + </servlet> + <servlet> <servlet-name>synchro</servlet-name> <servlet-class>be.edev.sagetools.synchro.servlets.SynchroServlet</servlet-class> </servlet> @@ -43,6 +47,14 @@ <url-pattern>/servlet/updateSageTable</url-pattern> </servlet-mapping> <servlet-mapping> + <servlet-name>listSageItems</servlet-name> + <url-pattern>/servlet/list/items/*</url-pattern> + </servlet-mapping> + <servlet-mapping> + <servlet-name>deleteItem</servlet-name> + <url-pattern>/servlet/delete/item/*</url-pattern> + </servlet-mapping> + <servlet-mapping> <servlet-name>synchro</servlet-name> <url-pattern>/servlet/synchro</url-pattern> </servlet-mapping> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |