Author: adamw Date: 2006-06-08 14:18:55 -0400 (Thu, 08 Jun 2006) New Revision: 4675 Added: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/exceptions/ labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/exceptions/TagAddException.java labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/exceptions/TagDeleteException.java labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/exceptions/TagGetException.java Modified: labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/RomeBasedFeed.java labs/shotoku/trunk/shotoku-tags/src/etc/META-INF/persistence.xml labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/ShotokuTag.java labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/TagService.java labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/ShotokuTagEntity.java labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/TagEntity.java labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/WebsiteTagEntity.java labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/service/TagServiceImpl.java labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/test/TagsTestServlet.java Log: http://jira.jboss.com/jira/browse/JBSHOTOKU-86 Modified: labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/RomeBasedFeed.java =================================================================== --- labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/RomeBasedFeed.java 2006-06-08 15:44:16 UTC (rev 4674) +++ labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/RomeBasedFeed.java 2006-06-08 18:18:55 UTC (rev 4675) @@ -36,11 +36,9 @@ import com.sun.syndication.io.SyndFeedInput; import com.sun.syndication.io.SyndFeedOutput; import com.sun.syndication.io.XmlReader; -import org.jboss.shotoku.feeds.data.Feed; public abstract class RomeBasedFeed extends FileBasedFeed { - public RomeBasedFeed(String name, String displayName, String type, File file) - throws IOException { + public RomeBasedFeed(String name, String displayName, String type, File file){ super(name, displayName, type, file); } Modified: labs/shotoku/trunk/shotoku-tags/src/etc/META-INF/persistence.xml =================================================================== --- labs/shotoku/trunk/shotoku-tags/src/etc/META-INF/persistence.xml 2006-06-08 15:44:16 UTC (rev 4674) +++ labs/shotoku/trunk/shotoku-tags/src/etc/META-INF/persistence.xml 2006-06-08 18:18:55 UTC (rev 4675) @@ -1,6 +1,6 @@ <entity-manager> <name>tags</name> - <jta-data-source>java:/JBossDS</jta-data-source> + <jta-data-source>java:/LabsDS</jta-data-source> <properties> <property name="hibernate.connection.datasource" value="JBossDS" /> <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" /> Modified: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/ShotokuTag.java =================================================================== --- labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/ShotokuTag.java 2006-06-08 15:44:16 UTC (rev 4674) +++ labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/ShotokuTag.java 2006-06-08 18:18:55 UTC (rev 4675) @@ -23,7 +23,6 @@ } public TagEntity getTagEntity() { - //return new ShotokuTagEntity(this); - return new TagEntity(this); + return new ShotokuTagEntity(this); } } Modified: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/TagService.java =================================================================== --- labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/TagService.java 2006-06-08 15:44:16 UTC (rev 4674) +++ labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/TagService.java 2006-06-08 18:18:55 UTC (rev 4675) @@ -1,6 +1,9 @@ package org.jboss.shotoku.tags; import org.jboss.shotoku.service.AdministratedService; +import org.jboss.shotoku.tags.exceptions.TagAddException; +import org.jboss.shotoku.tags.exceptions.TagDeleteException; +import org.jboss.shotoku.tags.exceptions.TagGetException; import java.util.List; @@ -8,11 +11,13 @@ * @author Adam Warski (ad...@as...) */ public interface TagService extends AdministratedService { - public void addTag(Tag t); - public void deleteTag(Tag t); + public void addTag(Tag t) throws TagAddException; + public void deleteTag(Tag t) throws TagDeleteException; - public TagList getTags(List<String> tagNames); - public TagList getTags(String resourceId); - public TagList getTagsByAuthor(String author); - public TagList getRelatedTags(List<Tag> relateTo); + public Tag getTag(String tagName) throws TagGetException; + + public TagList getTags(List<String> tagNames) throws TagGetException; + public TagList getTags(String resourceId) throws TagGetException; + public TagList getTagsByAuthor(String author) throws TagGetException; + public TagList getRelatedTags(List<Tag> relateTo) throws TagGetException; } Modified: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/ShotokuTagEntity.java =================================================================== --- labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/ShotokuTagEntity.java 2006-06-08 15:44:16 UTC (rev 4674) +++ labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/ShotokuTagEntity.java 2006-06-08 18:18:55 UTC (rev 4675) @@ -4,19 +4,25 @@ import org.jboss.shotoku.tags.ShotokuTag; import org.jboss.shotoku.tags.Tag; +import javax.persistence.*; + /** * @author Adam Warski (ad...@as...) */ -/*@Entity +@Entity @Inheritance(strategy = InheritanceType.SINGLE_TABLE) @DiscriminatorColumn(discriminatorType = DiscriminatorType.STRING) -@DiscriminatorValue("shotoku") */ +@DiscriminatorValue("shotoku") public class ShotokuTagEntity extends TagEntity { + public ShotokuTagEntity() { + + } + public ShotokuTagEntity(Tag t) { super(t); } - //@Transient + @Transient public AbstractTag getTag() { return new ShotokuTag(this); } Modified: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/TagEntity.java =================================================================== --- labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/TagEntity.java 2006-06-08 15:44:16 UTC (rev 4674) +++ labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/TagEntity.java 2006-06-08 18:18:55 UTC (rev 4675) @@ -12,10 +12,11 @@ * @author Adam Warski (ad...@as...) */ @Entity -//@Inheritance(strategy = InheritanceType.SINGLE_TABLE) -//@DiscriminatorColumn(name = "type", discriminatorType = DiscriminatorType.STRING) -@Table(name = "ShotokuTags") -public /*abstract*/ class TagEntity implements Serializable { +@Inheritance(strategy = InheritanceType.SINGLE_TABLE) +@DiscriminatorColumn(name = "type", discriminatorType = DiscriminatorType.STRING, length = 255) +@Table(name = "ShotokuTags", + uniqueConstraints = {@UniqueConstraint(columnNames={"name", "author", "resourceId"})}) +public abstract class TagEntity implements Serializable { private Integer id; private String name; @@ -30,7 +31,7 @@ } public TagEntity(Tag t) { - //this.id = t.getId(); + this.id = t.getId(); this.name = t.getName(); this.author = t.getAuthor(); this.resourceId = t.getResourceId(); @@ -43,6 +44,7 @@ */ @Id + @GeneratedValue(strategy = GenerationType.AUTO) public Integer getId() { return id; } @@ -51,6 +53,7 @@ this.id = id; } + @Column(length = 32) public String getName() { return name; } @@ -59,6 +62,7 @@ this.name = name; } + @Column(length = 32) public String getAuthor() { return author; } @@ -95,6 +99,6 @@ * Other methods. */ - //@Transient - //public abstract AbstractTag getTag(); + @Transient + public abstract AbstractTag getTag(); } Modified: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/WebsiteTagEntity.java =================================================================== --- labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/WebsiteTagEntity.java 2006-06-08 15:44:16 UTC (rev 4674) +++ labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/WebsiteTagEntity.java 2006-06-08 18:18:55 UTC (rev 4675) @@ -4,19 +4,25 @@ import org.jboss.shotoku.tags.WebsiteTag; import org.jboss.shotoku.tags.Tag; +import javax.persistence.*; + /** * @author Adam Warski (ad...@as...) */ -/*@Entity +@Entity @Inheritance(strategy = InheritanceType.SINGLE_TABLE) @DiscriminatorColumn(discriminatorType = DiscriminatorType.STRING) -@DiscriminatorValue("website")*/ +@DiscriminatorValue("website") public class WebsiteTagEntity extends TagEntity { + public WebsiteTagEntity() { + + } + public WebsiteTagEntity(Tag t) { super(t); } - //@Transient + @Transient public AbstractTag getTag() { return new WebsiteTag(this); } Added: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/exceptions/TagAddException.java =================================================================== --- labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/exceptions/TagAddException.java 2006-06-08 15:44:16 UTC (rev 4674) +++ labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/exceptions/TagAddException.java 2006-06-08 18:18:55 UTC (rev 4675) @@ -0,0 +1,10 @@ +package org.jboss.shotoku.tags.exceptions; + +/** + * @author Adam Warski (ad...@as...) + */ +public class TagAddException extends Exception { + public TagAddException(Throwable e) { super(e); } + public TagAddException(String message, Throwable e) { super(message, e); } + public TagAddException(String message) { super(message); } +} Added: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/exceptions/TagDeleteException.java =================================================================== --- labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/exceptions/TagDeleteException.java 2006-06-08 15:44:16 UTC (rev 4674) +++ labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/exceptions/TagDeleteException.java 2006-06-08 18:18:55 UTC (rev 4675) @@ -0,0 +1,10 @@ +package org.jboss.shotoku.tags.exceptions; + +/** + * @author Adam Warski (ad...@as...) + */ +public class TagDeleteException extends Exception { + public TagDeleteException(Throwable e) { super(e); } + public TagDeleteException(String message, Throwable e) { super(message, e); } + public TagDeleteException(String message) { super(message); } +} Added: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/exceptions/TagGetException.java =================================================================== --- labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/exceptions/TagGetException.java 2006-06-08 15:44:16 UTC (rev 4674) +++ labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/exceptions/TagGetException.java 2006-06-08 18:18:55 UTC (rev 4675) @@ -0,0 +1,10 @@ +package org.jboss.shotoku.tags.exceptions; + +/** + * @author Adam Warski (ad...@as...) + */ +public class TagGetException extends Exception { + public TagGetException(Throwable e) { super(e); } + public TagGetException(String message, Throwable e) { super(message, e); } + public TagGetException(String message) { super(message); } +} Modified: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/service/TagServiceImpl.java =================================================================== --- labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/service/TagServiceImpl.java 2006-06-08 15:44:16 UTC (rev 4674) +++ labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/service/TagServiceImpl.java 2006-06-08 18:18:55 UTC (rev 4675) @@ -39,6 +39,9 @@ import org.jboss.shotoku.service.AdministratedServiceGetter; import org.jboss.shotoku.service.AdministratedService; import org.jboss.shotoku.tags.*; +import org.jboss.shotoku.tags.exceptions.TagGetException; +import org.jboss.shotoku.tags.exceptions.TagAddException; +import org.jboss.shotoku.tags.exceptions.TagDeleteException; import org.jboss.shotoku.tags.dal.TagEntity; /** @@ -140,35 +143,58 @@ @PersistenceContext private EntityManager manager; - public void addTag(Tag t) { - manager.persist(t.getTagEntity()); + public void addTag(Tag t) throws TagAddException { + try { + TagEntity te = t.getTagEntity(); + if (te.getId() == null) { + // TODO remove this beautiful hack when ejb3 is updated + te.setId((int) Calendar.getInstance().getTimeInMillis()); + } + + manager.persist(te); + } catch (Throwable e) { + throw new TagAddException(e); + } } - public void deleteTag(Tag t) { + public void deleteTag(Tag t) throws TagDeleteException { + try { + manager.remove(t.getTagEntity()); + } catch (Throwable e) { + throw new TagDeleteException(e); + } } - public TagList getTags(String resourceId) { - /*List<TagEntity> result = manager.createQuery("from TagEntity where resourceId = :resourceId"). - setParameter("resourceId", resourceId).getResultList(); + public TagList getTags(String resourceId) throws TagGetException { + try { + //noinspection unchecked + List<TagEntity> result = manager.createQuery("from TagEntity where resourceId = :resourceId"). + setParameter("resourceId", resourceId).getResultList(); - List<Tag> t = new ArrayList<Tag>(); - for (TagEntity te : result) { - t.add(te.) + List<Tag> ret = new ArrayList<Tag>(); + for (TagEntity te : result) { + ret.add(te.getTag()); + } + + return new TagListImpl(ret, ""); + } catch (Throwable e) { + throw new TagGetException(e); } + } - return new TagListImpl(ret, ""); */ + public Tag getTag(String tagName) throws TagGetException { return null; } - public TagList getTags(List<String> tagNames) { + public TagList getTags(List<String> tagNames) throws TagGetException { return null; } - public TagList getRelatedTags(List<Tag> relateTo) { + public TagList getRelatedTags(List<Tag> relateTo) throws TagGetException { return null; } - public TagList getTagsByAuthor(String author) { + public TagList getTagsByAuthor(String author) throws TagGetException { return null; } } Modified: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/test/TagsTestServlet.java =================================================================== --- labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/test/TagsTestServlet.java 2006-06-08 15:44:16 UTC (rev 4674) +++ labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/test/TagsTestServlet.java 2006-06-08 18:18:55 UTC (rev 4675) @@ -3,6 +3,8 @@ import org.jboss.shotoku.tags.TagTools; import org.jboss.shotoku.tags.ShotokuTag; import org.jboss.shotoku.tags.Tag; +import org.jboss.shotoku.tags.exceptions.TagAddException; +import org.jboss.shotoku.tags.exceptions.TagGetException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; @@ -16,15 +18,25 @@ */ public class TagsTestServlet extends HttpServlet { + static int i = 2; + protected void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException { httpServletResponse.setContentType("text/html"); httpServletResponse.getWriter().println(TagTools.getService().getServiceName()); - TagTools.getService().addTag(new ShotokuTag("n1", "a1", "r1", "d1", - Calendar.getInstance().getTime())); + try { + TagTools.getService().addTag(new ShotokuTag("n1", "a1", "r" + i++, "d1", + Calendar.getInstance().getTime())); + } catch (TagAddException e) { + e.printStackTrace(); + } - /*for (Tag t : TagTools.getService().getTags("r1").getList()) { - httpServletResponse.getWriter().println(t.getName() + " - " + t.getData()); - } */ + try { + for (Tag t : TagTools.getService().getTags("r4").getList()) { + httpServletResponse.getWriter().println(t.getName() + " - " + t.getData()); + } + } catch (TagGetException e) { + e.printStackTrace(); + } } } |