/*
*
* Copyright (C) 2010 JFrog Ltd.
*
* 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.jfrog.wharf.ivy.model;
import org.apache.ivy.plugins.resolver.AbstractPatternsBasedResolver;
import org.apache.ivy.plugins.resolver.AbstractResolver;
import org.apache.ivy.plugins.resolver.BasicResolver;
import org.apache.ivy.plugins.resolver.DependencyResolver;
import org.jfrog.wharf.ivy.util.WharfUtils;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
/**
* @author Tomer Cohen
*/
public class WharfResolverMetadata implements Serializable {
public String id;
public String name;
public String type;
public boolean m2compatible;
public String ivyPattern;
public String artifactPattern;
public String user;
public Map<String, String> params;
public String[] checksumAlgorithms;
public String authentication;
public String proxy;
public WharfResolverMetadata() {
}
public WharfResolverMetadata(DependencyResolver resolver) {
this.name = resolver.getName();
if (resolver instanceof AbstractResolver) {
this.type = ((AbstractResolver) resolver).getTypeName();
} else {
this.type = resolver.getClass().getName();
}
if (resolver instanceof BasicResolver) {
this.checksumAlgorithms = ((BasicResolver) resolver).getChecksumAlgorithms();
}
if (resolver instanceof AbstractPatternsBasedResolver) {
AbstractPatternsBasedResolver patternsBasedResolver = (AbstractPatternsBasedResolver) resolver;
this.m2compatible = patternsBasedResolver.isM2compatible();
List<String> patterns = patternsBasedResolver.getIvyPatterns();
if (patterns.isEmpty()) {
this.ivyPattern = "";
} else if (patterns.size() == 1) {
this.ivyPattern = patterns.get(0);
} else {
StringBuilder builder = new StringBuilder();
for (String pattern : patterns) {
builder.append(pattern).append(",");
}
this.ivyPattern = builder.toString();
}
patterns = patternsBasedResolver.getArtifactPatterns();
if (patterns.isEmpty()) {
this.artifactPattern = "";
} else if (patterns.size() == 1) {
this.artifactPattern = patterns.get(0);
} else {
StringBuilder builder = new StringBuilder();
for (String pattern : patterns) {
builder.append(pattern).append(",");
}
this.artifactPattern = builder.toString();
}
}
// TODO: Find the user
}
public String getId() {
if (WharfUtils.isEmptyString(id)) {
String idString = type + name + ivyPattern + artifactPattern + params + user;
id = WharfUtils.computeUUID(idString);
}
return id;
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
WharfResolverMetadata that = (WharfResolverMetadata) o;
return getId().equals(that.getId());
}
@Override
public int hashCode() {
return getId().hashCode();
}
}