|
From: <jbo...@li...> - 2006-06-08 21:13:13
|
Author: adamw Date: 2006-06-08 17:13:03 -0400 (Thu, 08 Jun 2006) New Revision: 4685 Added: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/IdEntity.java Modified: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/AbstractTag.java labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/ShotokuTag.java labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/Tag.java labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/TagTools.java labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/WebsiteTag.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 Log: http://jira.jboss.com/jira/browse/JBSHOTOKU-86 Modified: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/AbstractTag.java =================================================================== --- labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/AbstractTag.java 2006-06-08 21:03:18 UTC (rev 4684) +++ labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/AbstractTag.java 2006-06-08 21:13:03 UTC (rev 4685) @@ -8,8 +8,6 @@ * @author Adam Warski (ad...@as...) */ public abstract class AbstractTag implements Tag { - private Integer id; - private String name; private String author; private String resourceId; @@ -17,9 +15,8 @@ private Date dateCreated; - public AbstractTag(Integer id, String name, String author, String resourceId, + public AbstractTag(String name, String author, String resourceId, String data, Date dateCreated) { - this.id = id; this.name = name; this.author = author; this.resourceId = resourceId; @@ -27,23 +24,10 @@ this.dateCreated = dateCreated; } - public AbstractTag(TagEntity te) { - this.id = te.getId(); - this.name = te.getName(); - this.author = te.getAuthor(); - this.resourceId = te.getResourceId(); - this.data = te.getData(); - this.dateCreated = te.getDateCreated(); - } - /* * TAG implementation. */ - public Integer getId() { - return id; - } - public String getName() { return name; } 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 21:03:18 UTC (rev 4684) +++ labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/ShotokuTag.java 2006-06-08 21:13:03 UTC (rev 4685) @@ -11,18 +11,10 @@ public class ShotokuTag extends AbstractTag { public ShotokuTag(String name, String author, String resourceId, String data, Date dateCreated) { - super(null, name, author, resourceId, data, dateCreated); + super(name, author, resourceId, data, dateCreated); } - public ShotokuTag(ShotokuTagEntity te) { - super(te); - } - public String getType() { - return "shotoku"; + return TagTools.SHOTOKU_TAG; } - - public TagEntity getTagEntity() { - return new ShotokuTagEntity(this); - } } Modified: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/Tag.java =================================================================== --- labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/Tag.java 2006-06-08 21:03:18 UTC (rev 4684) +++ labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/Tag.java 2006-06-08 21:13:03 UTC (rev 4685) @@ -8,14 +8,10 @@ * @author Adam Warski (ad...@as...) */ public interface Tag { - public Integer getId(); - public String getName(); public String getAuthor(); public String getResourceId(); public String getData(); public String getType(); public Date getDateCreated(); - - public TagEntity getTagEntity(); } Modified: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/TagTools.java =================================================================== --- labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/TagTools.java 2006-06-08 21:03:18 UTC (rev 4684) +++ labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/TagTools.java 2006-06-08 21:13:03 UTC (rev 4685) @@ -11,6 +11,9 @@ public class TagTools { public static final String TAG_SERVICE_NAME = "shotoku:service=tag"; + public static final String SHOTOKU_TAG = "shotoku"; + public static final String WEBSITE_TAG = "website"; + private static TagService instance; /** Modified: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/WebsiteTag.java =================================================================== --- labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/WebsiteTag.java 2006-06-08 21:03:18 UTC (rev 4684) +++ labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/WebsiteTag.java 2006-06-08 21:13:03 UTC (rev 4685) @@ -11,18 +11,10 @@ public class WebsiteTag extends AbstractTag { public WebsiteTag(String name, String author, String resourceId, String data, Date dateCreated) { - super(null, name, author, resourceId, data, dateCreated); + super(name, author, resourceId, data, dateCreated); } - public WebsiteTag(WebsiteTagEntity te) { - super(te); - } - public String getType() { - return "website"; + return TagTools.WEBSITE_TAG; } - - public TagEntity getTagEntity() { - return new WebsiteTagEntity(this); - } } Added: labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/IdEntity.java =================================================================== --- labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/IdEntity.java 2006-06-08 21:03:18 UTC (rev 4684) +++ labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/IdEntity.java 2006-06-08 21:13:03 UTC (rev 4685) @@ -0,0 +1,41 @@ +package org.jboss.shotoku.tags.dal; + +import javax.persistence.Embeddable; +import javax.persistence.Column; +import java.io.Serializable; + +/** + * @author Adam Warski (ad...@as...) + */ +@Embeddable +public class IdEntity implements Serializable { + private String name; + private String author; + private String resourceId; + + @Column(length = 32) + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @Column(length = 32) + public String getAuthor() { + return author; + } + + public void setAuthor(String author) { + this.author = author; + } + + public String getResourceId() { + return resourceId; + } + + public void setResourceId(String resourceId) { + this.resourceId = resourceId; + } +} 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 21:03:18 UTC (rev 4684) +++ labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/ShotokuTagEntity.java 2006-06-08 21:13:03 UTC (rev 4685) @@ -15,15 +15,11 @@ @DiscriminatorValue("shotoku") public class ShotokuTagEntity extends TagEntity { public ShotokuTagEntity() { - - } - public ShotokuTagEntity(Tag t) { - super(t); } @Transient public AbstractTag getTag() { - return new ShotokuTag(this); + return new ShotokuTag(getName(), getAuthor(), getResourceId(), getData(), getDateCreated()); } } 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 21:03:18 UTC (rev 4684) +++ labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/TagEntity.java 2006-06-08 21:13:03 UTC (rev 4685) @@ -1,8 +1,6 @@ package org.jboss.shotoku.tags.dal; -import org.jboss.shotoku.tags.Tag; import org.jboss.shotoku.tags.AbstractTag; -import org.jboss.shotoku.tags.ShotokuTag; import javax.persistence.*; import java.util.Date; @@ -14,11 +12,9 @@ @Entity @Inheritance(strategy = InheritanceType.SINGLE_TABLE) @DiscriminatorColumn(name = "type", discriminatorType = DiscriminatorType.STRING, length = 255) -@Table(name = "ShotokuTags", - uniqueConstraints = {@UniqueConstraint(columnNames={"name", "author", "resourceId"})}) +@Table(name = "ShotokuTags") +@IdClass(IdEntity.class) public abstract class TagEntity implements Serializable { - private Integer id; - private String name; private String author; private String resourceId; @@ -30,30 +26,11 @@ } - public TagEntity(Tag t) { - this.id = t.getId(); - this.name = t.getName(); - this.author = t.getAuthor(); - this.resourceId = t.getResourceId(); - this.data = t.getData(); - this.dateCreated = t.getDateCreated(); - } - /* * Fields. */ @Id - @GeneratedValue(strategy = GenerationType.AUTO) - public Integer getId() { - return id; - } - - public void setId(Integer id) { - this.id = id; - } - - @Column(length = 32) public String getName() { return name; } @@ -62,7 +39,7 @@ this.name = name; } - @Column(length = 32) + @Id public String getAuthor() { return author; } @@ -71,6 +48,7 @@ this.author = author; } + @Id public String getResourceId() { return resourceId; } 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 21:03:18 UTC (rev 4684) +++ labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/dal/WebsiteTagEntity.java 2006-06-08 21:13:03 UTC (rev 4685) @@ -15,15 +15,11 @@ @DiscriminatorValue("website") public class WebsiteTagEntity extends TagEntity { public WebsiteTagEntity() { - - } - public WebsiteTagEntity(Tag t) { - super(t); } @Transient public AbstractTag getTag() { - return new WebsiteTag(this); + return new WebsiteTag(getName(), getAuthor(), getResourceId(), getData(), getDateCreated()); } } 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 21:03:18 UTC (rev 4684) +++ labs/shotoku/trunk/shotoku-tags/src/java/org/jboss/shotoku/tags/service/TagServiceImpl.java 2006-06-08 21:13:03 UTC (rev 4685) @@ -43,6 +43,8 @@ import org.jboss.shotoku.tags.exceptions.TagAddException; import org.jboss.shotoku.tags.exceptions.TagDeleteException; import org.jboss.shotoku.tags.dal.TagEntity; +import org.jboss.shotoku.tags.dal.ShotokuTagEntity; +import org.jboss.shotoku.tags.dal.WebsiteTagEntity; /** * @author Adam Warski (ad...@as...) @@ -143,15 +145,28 @@ @PersistenceContext private EntityManager manager; + private TagEntity getTagEntity(Tag t) { + TagEntity te = null; + if (TagTools.SHOTOKU_TAG.equals(t.getType())) { + te = new ShotokuTagEntity(); + } else if (TagTools.WEBSITE_TAG.equals(t.getType())) { + te = new WebsiteTagEntity(); + } + + if (te != null) { + te.setAuthor(t.getAuthor()); + te.setData(t.getData()); + te.setDateCreated(t.getDateCreated()); + te.setName(t.getName()); + te.setResourceId(t.getResourceId()); + } + + return te; + } + 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); + manager.persist(getTagEntity(t)); } catch (Throwable e) { throw new TagAddException(e); } @@ -159,7 +174,7 @@ public void deleteTag(Tag t) throws TagDeleteException { try { - manager.remove(t.getTagEntity()); + manager.remove(getTagEntity(t)); } catch (Throwable e) { throw new TagDeleteException(e); } |