org.gradle.plugins.ide.idea.model.ProjectLibrary Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of gradle-api Show documentation
Show all versions of gradle-api Show documentation
Gradle 6.9.1 API redistribution.
/*
* Copyright 2011 the original author or authors.
*
* 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.gradle.plugins.ide.idea.model;
import com.google.common.base.Objects;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import groovy.util.Node;
import org.gradle.api.Incubating;
import java.io.File;
import java.util.Map;
import java.util.Set;
/**
* A project-level IDEA library.
*/
@Incubating
public class ProjectLibrary {
private String name;
private String type;
private Set compilerClasspath = Sets.newLinkedHashSet();
private Set classes = Sets.newLinkedHashSet();
private Set javadoc = Sets.newLinkedHashSet();
private Set sources = Sets.newLinkedHashSet();
/**
* The name of the library.
*/
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
/**
* The type of the library.
*/
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
/**
* A set of Jar files containing compiler classes.
*/
public Set getCompilerClasspath() {
return compilerClasspath;
}
public void setCompilerClasspath(Set compilerClasspath) {
this.compilerClasspath = compilerClasspath;
}
/**
* A set of Jar files or directories containing compiled code.
*/
public Set getClasses() {
return classes;
}
/**
* A set of Jar files or directories containing source code.
*/
public void setClasses(Set classes) {
this.classes = classes;
}
/**
* A set of Jar files or directories containing javadoc.
*/
public Set getJavadoc() {
return javadoc;
}
public void setJavadoc(Set javadoc) {
this.javadoc = javadoc;
}
/**
* A set of directories containing sources.
*/
public Set getSources() {
return sources;
}
public void setSources(Set sources) {
this.sources = sources;
}
public void addToNode(Node parentNode, PathFactory pathFactory) {
Map libraryAttributes = Maps.newHashMapWithExpectedSize(2);
libraryAttributes.put("name", name);
if (type != null) {
libraryAttributes.put("type", type);
}
Node libraryNode = parentNode.appendNode("library", libraryAttributes);
Node classesNode = libraryNode.appendNode("CLASSES");
for (File file : classes) {
Map attributes = Maps.newHashMapWithExpectedSize(1);
attributes.put("url", pathFactory.path(file).getUrl());
classesNode.appendNode("root", attributes);
}
Node javadocNode = libraryNode.appendNode("JAVADOC");
for (File file : javadoc) {
Map attributes = Maps.newHashMapWithExpectedSize(1);
attributes.put("url", pathFactory.path(file).getUrl());
javadocNode.appendNode("root", attributes);
}
Node sourcesNode = libraryNode.appendNode("SOURCES");
for (File file : sources) {
Map attributes = Maps.newHashMapWithExpectedSize(1);
attributes.put("url", pathFactory.path(file).getUrl());
sourcesNode.appendNode("root", attributes);
}
if (compilerClasspath.size() > 0) {
Node properties = libraryNode.appendNode("properties");
Node compilerClasspathNode = properties.appendNode("compiler-classpath");
for (File file : compilerClasspath) {
Map attributes = Maps.newHashMapWithExpectedSize(1);
attributes.put("url", pathFactory.path(file, true).getUrl());
compilerClasspathNode.appendNode("root", attributes);
}
}
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (!(obj instanceof ProjectLibrary)) {
return false;
}
ProjectLibrary that = (ProjectLibrary) obj;
return Objects.equal(name, that.name)
&& Objects.equal(type, that.type)
&& Objects.equal(compilerClasspath, that.compilerClasspath)
&& Objects.equal(classes, that.classes)
&& Objects.equal(javadoc, that.javadoc)
&& Objects.equal(sources, that.sources);
}
@Override
public int hashCode() {
int result;
result = name.hashCode();
result = 31 * result + (type != null ? type.hashCode() : 0);
result = 31 * result + compilerClasspath.hashCode();
result = 31 * result + classes.hashCode();
result = 31 * result + javadoc.hashCode();
result = 31 * result + sources.hashCode();
return result;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy