package org.apache.archiva.admin.model;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import org.apache.archiva.admin.model.beans.PropertyEntry;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author Olivier Lamy
* @since 1.4-M1
*/
public abstract class AbstractRepositoryConnector
implements Serializable
{
/**
* The Repository Source for this connector.
*/
private String sourceRepoId;
/**
* The Repository Target for this connector.
*/
private String targetRepoId;
/**
* The network proxy ID to use for this connector.
*/
private String proxyId;
/**
* Field blackListPatterns.
*/
private List<String> blackListPatterns;
/**
* Field whiteListPatterns.
*/
private List<String> whiteListPatterns;
/**
* Field policies.
*/
private Map<String, String> policies;
/**
* field to ease json mapping wrapper on <code>policies</code> field
*
* @since 1.4-M3
*/
private List<PropertyEntry> policiesEntries;
/**
* Field properties.
*/
private Map<String, String> properties;
/**
* field to ease json mapping wrapper on <code>properties</code> field
*
* @since 1.4-M3
*/
private List<PropertyEntry> propertiesEntries;
/**
* If the the repository proxy connector is disabled or not
*/
private boolean disabled = false;
//-----------/
//- Methods -/
//-----------/
/**
* Method addBlackListPattern.
*
* @param string
*/
public void addBlackListPattern( String string )
{
getBlackListPatterns().add( string );
}
/**
* Method addPolicy.
*
* @param key
* @param value
*/
public void addPolicy( String key, String value )
{
getPolicies().put( key, value );
}
/**
* Method addProperty.
*
* @param key
* @param value
*/
public void addProperty( String key, String value )
{
getProperties().put( key, value );
}
/**
* Method addWhiteListPattern.
*
* @param string
*/
public void addWhiteListPattern( String string )
{
getWhiteListPatterns().add( string );
}
/**
* Method getBlackListPatterns.
*
* @return List
*/
public List<String> getBlackListPatterns()
{
if ( this.blackListPatterns == null )
{
this.blackListPatterns = new ArrayList<>( 0 );
}
return this.blackListPatterns;
}
/**
* Method getPolicies.
*
* @return Map
*/
public Map<String, String> getPolicies()
{
if ( this.policies == null )
{
this.policies = new HashMap<>();
}
return this.policies;
}
/**
* Method getProperties.
*
* @return Map
*/
public Map<String, String> getProperties()
{
if ( this.properties == null )
{
this.properties = new HashMap<>();
}
return this.properties;
}
/**
* Get the network proxy ID to use for this connector.
*
* @return String
*/
public String getProxyId()
{
return this.proxyId;
}
/**
* Get the Repository Source for this connector.
*
* @return String
*/
public String getSourceRepoId()
{
return this.sourceRepoId;
}
/**
* Get the Repository Target for this connector.
*
* @return String
*/
public String getTargetRepoId()
{
return this.targetRepoId;
}
/**
* Method getWhiteListPatterns.
*
* @return List
*/
public List<String> getWhiteListPatterns()
{
if ( this.whiteListPatterns == null )
{
this.whiteListPatterns = new ArrayList<>( 0 );
}
return this.whiteListPatterns;
}
/**
* Get if the the repository proxy connector is disabled or not
* .
*
* @return boolean
*/
public boolean isDisabled()
{
return this.disabled;
}
/**
* Method removeBlackListPattern.
*
* @param string
*/
public void removeBlackListPattern( String string )
{
getBlackListPatterns().remove( string );
}
/**
* Method removeWhiteListPattern.
*
* @param string
*/
public void removeWhiteListPattern( String string )
{
getWhiteListPatterns().remove( string );
}
/**
* Set the list of blacklisted patterns for this connector.
*
* @param blackListPatterns
*/
public void setBlackListPatterns( List<String> blackListPatterns )
{
this.blackListPatterns = blackListPatterns;
}
/**
* Set if the the repository proxy connector is
* disabled or not
* .
*
* @param disabled
*/
public void setDisabled( boolean disabled )
{
this.disabled = disabled;
}
/**
* Set policy configuration for the connector.
*
* @param policies
*/
public void setPolicies( Map<String, String> policies )
{
this.policies = policies;
}
/**
* Set configuration for the connector.
*
* @param properties
*/
public void setProperties( Map<String, String> properties )
{
this.properties = properties;
}
/**
* Set the network proxy ID to use for this connector.
*
* @param proxyId
*/
public void setProxyId( String proxyId )
{
this.proxyId = proxyId;
}
/**
* Set the Repository Source for this connector.
*
* @param sourceRepoId
*/
public void setSourceRepoId( String sourceRepoId )
{
this.sourceRepoId = sourceRepoId;
}
/**
* Set the Repository Target for this connector.
*
* @param targetRepoId
*/
public void setTargetRepoId( String targetRepoId )
{
this.targetRepoId = targetRepoId;
}
/**
* Set
* The list of whitelisted patterns for this
* connector.
*
* @param whiteListPatterns
*/
public void setWhiteListPatterns( List<String> whiteListPatterns )
{
this.whiteListPatterns = whiteListPatterns;
}
/**
* Obtain a specific policy from the underlying connector.
*
* @param policyId the policy id to fetch.
* @param defaultValue the default value for the policy id.
* @return the configured policy value (or default value if not found).
*/
public String getPolicy( String policyId, String defaultValue )
{
if ( this.getPolicies() == null )
{
return null;
}
String value = this.getPolicies().get( policyId );
if ( value == null )
{
return defaultValue;
}
return value;
}
public List<PropertyEntry> getPoliciesEntries()
{
policiesEntries = new ArrayList<>( getPolicies().size() );
for ( Map.Entry<String, String> entry : getPolicies().entrySet() )
{
policiesEntries.add( new PropertyEntry( entry.getKey(), entry.getValue() ) );
}
return policiesEntries;
}
public void setPoliciesEntries( List<PropertyEntry> policiesEntries )
{
for ( PropertyEntry propertyEntry : policiesEntries )
{
addPolicy( propertyEntry.getKey(), propertyEntry.getValue() );
}
}
public List<PropertyEntry> getPropertiesEntries()
{
propertiesEntries = new ArrayList<>( getProperties().size() );
for ( Map.Entry<String, String> entry : getProperties().entrySet() )
{
propertiesEntries.add( new PropertyEntry( entry.getKey(), entry.getValue() ) );
}
return propertiesEntries;
}
public void setPropertiesEntries( List<PropertyEntry> propertiesEntries )
{
for ( PropertyEntry propertyEntry : propertiesEntries )
{
addProperty( propertyEntry.getKey(), propertyEntry.getValue() );
}
}
@Override
public boolean equals( Object o )
{
if ( this == o )
{
return true;
}
if ( o == null || getClass() != o.getClass() )
{
return false;
}
AbstractRepositoryConnector that = (AbstractRepositoryConnector) o;
if ( sourceRepoId != null ? !sourceRepoId.equals( that.sourceRepoId ) : that.sourceRepoId != null )
{
return false;
}
if ( targetRepoId != null ? !targetRepoId.equals( that.targetRepoId ) : that.targetRepoId != null )
{
return false;
}
return true;
}
@Override
public int hashCode()
{
int result = sourceRepoId != null ? sourceRepoId.hashCode() : 0;
result = 31 * result + ( targetRepoId != null ? targetRepoId.hashCode() : 0 );
return result;
}
@Override
public String toString()
{
final StringBuilder sb = new StringBuilder();
sb.append( "AbstractRepositoryConnector" );
sb.append( "{sourceRepoId='" ).append( sourceRepoId ).append( '\'' );
sb.append( ", targetRepoId='" ).append( targetRepoId ).append( '\'' );
sb.append( ", proxyId='" ).append( proxyId ).append( '\'' );
sb.append( ", blackListPatterns=" ).append( blackListPatterns );
sb.append( ", whiteListPatterns=" ).append( whiteListPatterns );
sb.append( ", policies=" ).append( policies );
sb.append( ", properties=" ).append( properties );
sb.append( ", disabled=" ).append( disabled );
sb.append( '}' );
return sb.toString();
}
}