All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.greenpepper.server.domain.RepositoryType Maven / Gradle / Ivy

There is a newer version: 4.2.4
Show newest version
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 marshallize() { Vector parameters = new Vector(); parameters.add(REPOSITORY_TYPE_NAME_IDX, StringUtils.defaultString(name)); Hashtable repoTypeClasses = new Hashtable(); for(RepositoryTypeClass repoTypeClass : repositoryTypeClasses) repoTypeClasses.put(repoTypeClass.getEnvType().getName(), repoTypeClass.getClassName()); parameters.add(REPOSITORY_TYPE_REPOCLASSES_IDX, repoTypeClasses); parameters.add(REPOSITORY_TYPE_NAME_FORMAT_IDX, StringUtils.defaultString(getDocumentUrlFormat())); parameters.add(REPOSITORY_TYPE_URI_FORMAT_IDX, StringUtils.defaultString(getTestUrlFormat())); return parameters; } /** {@inheritDoc} */ public int compareTo(Object o) { return getName().compareTo(((RepositoryType)o).getName()); } /** {@inheritDoc} */ public boolean equals(Object o) { if(o == null || !(o instanceof RepositoryType)) { return false; } RepositoryType typeCompared = (RepositoryType)o; return getName().equals(typeCompared.getName()); } /** *

hashCode.

* * @return a int. */ public int hashCode() { return getName() == null ? 0 : getName().hashCode(); } /** *

Getter for the field repositoryClass.

* * @return a {@link java.lang.String} object. */ @Basic @Column(name = "REPOSITORY_CLASS", nullable = true, length=255) public String getRepositoryClass() { return repositoryClass; } /** *

Setter for the field repositoryClass.

* * @param repositoryClass a {@link java.lang.String} object. */ public void setRepositoryClass(String repositoryClass) { this.repositoryClass = repositoryClass; } private String withNoStyle(String location) { URI uri = URI.create(URIUtil.raw(location)); StringBuilder sb = new StringBuilder(); if(uri.getScheme() != null) sb.append(uri.getScheme()).append("://"); if(uri.getAuthority() != null) sb.append(uri.getAuthority()); if(uri.getPath() != null) sb.append(uri.getPath()); String query = uri.getQuery(); if(query == null) query = "?includeStyle=false"; else query += "&includeStyle=false"; sb.append("?").append(query); if(uri.getFragment() != null) sb.append("#").append(uri.getFragment()); return sb.toString(); } }