com.greenpepper.server.domain.RepositoryType Maven / Gradle / Ivy
package com.greenpepper.server.domain;
import static com.greenpepper.server.rpc.xmlrpc.XmlRpcDataMarshaller.REPOSITORY_TYPE_NAME_FORMAT_IDX;
import static com.greenpepper.server.rpc.xmlrpc.XmlRpcDataMarshaller.REPOSITORY_TYPE_NAME_IDX;
import static com.greenpepper.server.rpc.xmlrpc.XmlRpcDataMarshaller.REPOSITORY_TYPE_REPOCLASSES_IDX;
import static com.greenpepper.server.rpc.xmlrpc.XmlRpcDataMarshaller.REPOSITORY_TYPE_URI_FORMAT_IDX;
import java.net.URI;
import java.util.HashSet;
import java.util.Hashtable;
import java.util.Set;
import java.util.Vector;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Transient;
import com.greenpepper.server.GreenPepperServerException;
import com.greenpepper.server.rpc.xmlrpc.XmlRpcDataMarshaller;
import com.greenpepper.util.StringUtil;
import com.greenpepper.util.URIUtil;
import org.apache.commons.lang3.StringUtils;
import static com.greenpepper.util.StringUtil.escapeSemiColon;
/**
* RepositoryType Class.
* Known types: JIRA / CONFLUENCE / FILE ...
*
* Copyright (c) 2006 Pyxis technologies inc. All Rights Reserved.
*
* @author JCHUET
* @version $Id: $Id
*/
@Entity
@Table(name="REPOSITORY_TYPE")
@SuppressWarnings("serial")
public class RepositoryType extends AbstractVersionedEntity implements Comparable
{
private String name;
private String documentUrlFormat;
private String testUrlFormat;
private String repositoryClass;
private Set repositoryTypeClasses = new HashSet();
/**
* newInstance.
*
* @param name a {@link java.lang.String} object.
* @return a {@link com.greenpepper.server.domain.RepositoryType} object.
*/
public static RepositoryType newInstance(String name)
{
RepositoryType type = new RepositoryType();
type.setName(name);
return type;
}
/**
* Getter for the field name
.
*
* @return a {@link java.lang.String} object.
*/
@Basic
@Column(name = "NAME", unique = true, nullable = false, length=255)
public String getName()
{
return name;
}
/**
* Getter for the field repositoryTypeClasses
.
*
* @return a {@link java.util.Set} object.
*/
@OneToMany(mappedBy="repositoryType", cascade=CascadeType.ALL)
public Set getRepositoryTypeClasses()
{
return repositoryTypeClasses;
}
/**
* Getter for the field documentUrlFormat
.
*
* @return a {@link java.lang.String} object.
*/
@Basic
@Column(name = "DOCUMENT_URL_FORMAT", nullable = true, length=255)
public String getDocumentUrlFormat()
{
return documentUrlFormat;
}
/**
* Getter for the field testUrlFormat
.
*
* @return a {@link java.lang.String} object.
*/
@Basic
@Column(name = "TEST_URL_FORMAT", nullable = true, length=255)
public String getTestUrlFormat()
{
return testUrlFormat;
}
/**
* Setter for the field name
.
*
* @param name a {@link java.lang.String} object.
*/
public void setName(String name)
{
this.name = name;
}
/**
* Setter for the field repositoryTypeClasses
.
*
* @param repositoryTypeClasses a {@link java.util.Set} object.
*/
public void setRepositoryTypeClasses(Set repositoryTypeClasses)
{
this.repositoryTypeClasses = repositoryTypeClasses;
}
/**
* Setter for the field documentUrlFormat
.
*
* @param documentUrlFormat a {@link java.lang.String} object.
*/
public void setDocumentUrlFormat(String documentUrlFormat)
{
this.documentUrlFormat = StringUtil.toNullIfEmpty(documentUrlFormat);
}
/**
* Setter for the field testUrlFormat
.
*
* @param testUrlFormat a {@link java.lang.String} object.
*/
public void setTestUrlFormat(String testUrlFormat)
{
this.testUrlFormat = StringUtil.toNullIfEmpty(testUrlFormat);
}
/**
* resolveName.
*
* @param document a {@link com.greenpepper.server.domain.Document} object.
* @return a {@link java.lang.String} object.
* @throws com.greenpepper.server.GreenPepperServerException if any.
*/
public String resolveName(Document document)throws GreenPepperServerException
{
if(!StringUtil.isEmpty(documentUrlFormat))
{
return String.format(documentUrlFormat, document.getRepository().getBaseRepositoryUrl(), document.getName());
}
return null;
}
/**
* resolveUri.
*
* @param document a {@link com.greenpepper.server.domain.Document} object.
* @return a {@link java.lang.String} object.
* @throws com.greenpepper.server.GreenPepperServerException if any.
*/
public String resolveUri(Document document)throws GreenPepperServerException
{
if(!StringUtil.isEmpty(testUrlFormat))
{
return String.format(testUrlFormat, document.getRepository().getBaseTestUrl(), document.getName());
}
return null;
}
/**
* registerClassForEnvironment.
*
* @param className a {@link java.lang.String} object.
* @param envType a {@link com.greenpepper.server.domain.EnvironmentType} object.
*/
public void registerClassForEnvironment(String className, EnvironmentType envType)
{
RepositoryTypeClass repoTypeClass = RepositoryTypeClass.newInstance(this, envType, className);
repositoryTypeClasses.add(repoTypeClass);
}
/**
* getRepositoryTypeClass.
*
* @param envType a {@link com.greenpepper.server.domain.EnvironmentType} object.
* @return a {@link java.lang.String} object.
*/
@Transient
public String getRepositoryTypeClass(EnvironmentType envType)
{
for(RepositoryTypeClass repoTypeClass : repositoryTypeClasses)
if(repoTypeClass.getEnvType().equals(envType))
return repoTypeClass.getClassName();
return null;
}
/**
* asFactoryArguments.
*
* @param repository a {@link com.greenpepper.server.domain.Repository} object.
* @param env a {@link com.greenpepper.server.domain.EnvironmentType} object.
* @param withStyle a boolean.
* @param user a {@link java.lang.String} object.
* @param pwd a {@link java.lang.String} object.
* @return a {@link java.lang.String} object.
*/
public String asFactoryArguments(Repository repository, EnvironmentType env, boolean withStyle, String user, String pwd)
{
StringBuilder sb = new StringBuilder();
sb.append(getRepositoryTypeClass(env)).append(";");
sb.append(withStyle || name.equals("FILE") ? repository.getBaseTestUrl() : withNoStyle(repository.getBaseTestUrl()));
if(user == null)
{
if(!StringUtil.isEmpty(repository.getUsername()))
sb.append(";").append(repository.getUsername()).append(";").append(escapeSemiColon(repository.getPassword()));
}
else
{
sb.append(";").append(user).append(";").append(escapeSemiColon(pwd));
}
return sb.toString();
}
/**
* marshallize.
*
* @return a {@link java.util.Vector} object.
*/
public Vector