/******************************************************************************* * Copyright (c) 2013, 2016 GoPivotal, Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * GoPivotal, Inc. - initial API and implementation *******************************************************************************/ package org.springframework.ide.eclipse.boot.core; import org.apache.commons.lang3.StringUtils; import org.springframework.ide.eclipse.boot.core.initializr.InitializrDependencySpec.DependencyInfo; import org.springsource.ide.eclipse.commons.livexp.ui.Ilabelable; public class MavenCoordinates implements IMavenCoordinates, Ilabelable { private final String group; private final String artifact; private final String version; private final String classifier; public MavenCoordinates(String group, String artifact, String classifier, String version) { this.group = group; this.artifact = artifact; this.version = version; this.classifier = classifier; } public MavenCoordinates(String group, String artifact, String version) { this.group = group; this.artifact = artifact; this.version = version; this.classifier = null; } public MavenCoordinates(DependencyInfo dep) { this(dep.getGroupId(),dep.getArtifactId(),dep.getClassifier(),dep.getVersion()); } @Override public String getGroupId() { return group; } @Override public String getArtifactId() { return artifact; } @Override public String getClassifier() { return classifier; } @Override public String getVersion() { return version; } @Override public String toString() { return group + ":"+ artifact+":"+(classifier!=null?classifier+":":"")+version; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((artifact == null) ? 0 : artifact.hashCode()); result = prime * result + ((classifier == null) ? 0 : classifier.hashCode()); result = prime * result + ((group == null) ? 0 : group.hashCode()); result = prime * result + ((version == null) ? 0 : version.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; MavenCoordinates other = (MavenCoordinates) obj; if (artifact == null) { if (other.artifact != null) return false; } else if (!artifact.equals(other.artifact)) return false; if (classifier == null) { if (other.classifier != null) return false; } else if (!classifier.equals(other.classifier)) return false; if (group == null) { if (other.group != null) return false; } else if (!group.equals(other.group)) return false; if (version == null) { if (other.version != null) return false; } else if (!version.equals(other.version)) return false; return true; } @Override public String getLabel() { return artifact; } public String toXmlString() { StringBuilder xml = new StringBuilder(); xml.append("<dependency>\n"); xml.append(" <artifactId>"+artifact+"</artifactId>\n"); xml.append(" <groupId>"+artifact+"</groupId>\n"); if (StringUtils.isNotBlank(version)) { xml.append(" <version>"+version+"</version>\n"); } if (StringUtils.isNotBlank(classifier)) { xml.append(" <classifier>"+classifier+"</classifier>\n"); } xml.append("</dependency>"); return xml.toString(); } }