/* * JBoss, Home of Professional Open Source * * Distributable under LGPL license. * See terms of license at gnu.org. */ package org.jboss.seam.wiki.core.model; import org.hibernate.validator.Length; import javax.persistence.*; import java.util.regex.Pattern; import java.util.regex.Matcher; import java.io.Serializable; @Entity @Table(name = "LINK_PROTOCOL") public class LinkProtocol implements Serializable { @Id @GeneratedValue(generator = "wikiSequenceGenerator") @Column(name = "LINK_PROTOCOL_ID") private Long id; @Version @Column(name = "OBJ_VERSION", nullable = false) protected int version = 0; @Column(name = "PREFIX", nullable = false) @Length(min = 2, max = 10) @org.hibernate.validator.Pattern( regex="[a-zA-Z]+", message="#{messages['lacewiki.entity.LinkProtokol.PrefixMustOnlyContainLetters']}" ) private String prefix; @Column(name = "LINK", nullable = false) @Length(min = 3, max = 1023) private String link; public LinkProtocol() {} // Immutable properties public Long getId() { return id; } public Integer getVersion() { return version; } // Mutable properties public String getPrefix() { return prefix; } public void setPrefix(String prefix) { this.prefix = prefix; } public String getLink() { return link; } public void setLink(String link) { this.link = link; } public String getRealLink(String substitute) { StringBuffer realLink = new StringBuffer(getLink().length()); Pattern regex = Pattern.compile( "(" + Pattern.quote("[") + Pattern.quote("[") + "link" +Pattern.quote("]") + Pattern.quote("]") + ")" ); Matcher matcher = regex.matcher(getLink()); while (matcher.find()) { matcher.appendReplacement(realLink, substitute); } matcher.appendTail(realLink); return realLink.toString(); } }