/*
* Copyright 2012 Red Hat, Inc. and/or its affiliates.
*
* Licensed 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.
*/
package org.guvnor.common.services.project.model;
import java.util.ArrayList;
import java.util.List;
import org.jboss.errai.common.client.api.annotations.Portable;
@Portable
public class POM {
private static final String MODEL_VERSION = "4.0.0";
private GAV parent;
private GAV gav;
private String name;
private String description;
private String packaging;
private Build build;
private List<Dependency> dependencies = new ArrayList<Dependency>();
private List<Repository> repositories = new ArrayList<Repository>();
private List<String> modules = new ArrayList<String>();
public POM() {
this.gav = new GAV();
}
// Kept this for backwards compatibility
public POM( final GAV gav ) {
this(null, null, gav);
}
public POM( final String name,
final String description,
final GAV gav ) {
super();
this.name = name;
this.description = description;
this.gav = gav;
}
public POM( final String name,
final String description,
final GAV gav,
final boolean multiModule ) {
super();
this.name = name;
this.description = description;
this.gav = gav;
if ( multiModule ) {
packaging = "pom";
}
}
public GAV getGav() {
return gav;
}
public Dependencies getDependencies() {
return new Dependencies( dependencies );
}
public void setDependencies( List<Dependency> dependencies ) {
this.dependencies = dependencies;
}
public void addRepository(Repository repository) {
repositories.add(repository);
}
public List<Repository> getRepositories() {
return repositories;
}
public String getModelVersion() {
return MODEL_VERSION;
}
public String getName() {
return name;
}
public void setName( String name ) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription( String description ) {
this.description = description;
}
public GAV getParent() {
return parent;
}
public void setParent(GAV parent) {
this.parent = parent;
}
public List<String> getModules() {
return modules;
}
public Build getBuild() {
return build;
}
public void setBuild( Build build ) {
this.build = build;
}
public void setModules(List<String> modules) {
this.modules = modules;
}
public boolean isMultiModule() {
return packaging.equals( "pom" );
}
public void setPackaging( String packaging ) {
this.packaging = packaging;
}
public String getPackaging() {
return packaging;
}
public boolean hasParent() {
return parent != null;
}
@Override
public boolean equals( Object o ) {
if ( this == o ) {
return true;
}
if ( o == null || getClass() != o.getClass() ) {
return false;
}
POM pom = ( POM ) o;
if ( packaging != null ? !packaging.equals( pom.packaging ) : pom.packaging != null ) {
return false;
}
if ( dependencies != null ? !dependencies.equals( pom.dependencies ) : pom.dependencies != null ) {
return false;
}
if ( description != null ? !description.equals( pom.description ) : pom.description != null ) {
return false;
}
if ( gav != null ? !gav.equals( pom.gav ) : pom.gav != null ) {
return false;
}
if ( modules != null ? !modules.equals( pom.modules ) : pom.modules != null ) {
return false;
}
if ( name != null ? !name.equals( pom.name ) : pom.name != null ) {
return false;
}
if ( parent != null ? !parent.equals( pom.parent ) : pom.parent != null ) {
return false;
}
if ( repositories != null ? !repositories.equals( pom.repositories ) : pom.repositories != null ) {
return false;
}
return true;
}
@Override
public int hashCode() {
int result = parent != null ? parent.hashCode() : 0;
result = ~~result;
result = 31 * result + ( gav != null ? gav.hashCode() : 0 );
result = ~~result;
result = 31 * result + ( name != null ? name.hashCode() : 0 );
result = ~~result;
result = 31 * result + ( description != null ? description.hashCode() : 0 );
result = ~~result;
result = 31 * result + (packaging != null ? packaging.hashCode() : 0);
result = ~~result;
result = 31 * result + ( dependencies != null ? dependencies.hashCode() : 0 );
result = ~~result;
result = 31 * result + ( repositories != null ? repositories.hashCode() : 0 );
result = ~~result;
result = 31 * result + ( modules != null ? modules.hashCode() : 0 );
result = ~~result;
return result;
}
}