/* * Copyright 2000-2013 JetBrains s.r.o. * * 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.jetbrains.plugins.gradle.settings; import com.intellij.openapi.externalSystem.service.execution.ExternalSystemJdkUtil; import com.intellij.openapi.externalSystem.settings.ExternalProjectSettings; import com.intellij.util.SmartList; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.xmlb.annotations.AbstractCollection; import com.intellij.util.xmlb.annotations.Attribute; import com.intellij.util.xmlb.annotations.OptionTag; import com.intellij.util.xmlb.annotations.Tag; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.plugins.gradle.model.data.BuildParticipant; import java.util.List; /** * @author Denis Zhdanov * @since 4/24/13 11:57 AM */ public class GradleProjectSettings extends ExternalProjectSettings { @Nullable private String myGradleHome; @Nullable private String myGradleJvm = ExternalSystemJdkUtil.USE_PROJECT_JDK; @Nullable private DistributionType distributionType; private boolean disableWrapperSourceDistributionNotification; private boolean resolveModulePerSourceSet = true; @Nullable private CompositeBuild myCompositeBuild; @Nullable public String getGradleHome() { return myGradleHome; } public void setGradleHome(@Nullable String gradleHome) { myGradleHome = gradleHome; } @Nullable public String getGradleJvm() { return myGradleJvm; } public void setGradleJvm(@Nullable String gradleJvm) { myGradleJvm = gradleJvm; } @Nullable public DistributionType getDistributionType() { return distributionType; } public void setDistributionType(@Nullable DistributionType distributionType) { this.distributionType = distributionType; } public boolean isDisableWrapperSourceDistributionNotification() { return disableWrapperSourceDistributionNotification; } public void setDisableWrapperSourceDistributionNotification(boolean disableWrapperSourceDistributionNotification) { this.disableWrapperSourceDistributionNotification = disableWrapperSourceDistributionNotification; } public boolean isResolveModulePerSourceSet() { return resolveModulePerSourceSet; } public void setResolveModulePerSourceSet(boolean useIdeModulePerSourceSet) { this.resolveModulePerSourceSet = useIdeModulePerSourceSet; } @OptionTag(tag = "compositeConfiguration", nameAttribute = "") @Nullable public CompositeBuild getCompositeBuild() { return myCompositeBuild; } public void setCompositeBuild(@Nullable CompositeBuild compositeBuild) { myCompositeBuild = compositeBuild; } @NotNull @Override public ExternalProjectSettings clone() { GradleProjectSettings result = new GradleProjectSettings(); copyTo(result); result.myGradleHome = myGradleHome; result.myGradleJvm = myGradleJvm; result.distributionType = distributionType; result.disableWrapperSourceDistributionNotification = disableWrapperSourceDistributionNotification; result.resolveModulePerSourceSet = resolveModulePerSourceSet; result.myCompositeBuild = myCompositeBuild != null ? myCompositeBuild.copy() : null; return result; } @Tag("compositeBuild") public static class CompositeBuild { @Nullable private CompositeDefinitionSource myCompositeDefinitionSource; private List<BuildParticipant> myCompositeParticipants = new SmartList<>(); @Attribute @Nullable public CompositeDefinitionSource getCompositeDefinitionSource() { return myCompositeDefinitionSource; } public void setCompositeDefinitionSource(@Nullable CompositeDefinitionSource compositeDefinitionSource) { myCompositeDefinitionSource = compositeDefinitionSource; } @AbstractCollection(surroundWithTag = false, elementTag = "build") @OptionTag(tag = "builds", nameAttribute = "") @NotNull public List<BuildParticipant> getCompositeParticipants() { return myCompositeParticipants; } public void setCompositeParticipants(List<BuildParticipant> compositeParticipants) { myCompositeParticipants = compositeParticipants == null ? new SmartList<>() : ContainerUtil.newArrayList(compositeParticipants); } @NotNull public CompositeBuild copy() { CompositeBuild result = new CompositeBuild(); result.myCompositeParticipants = ContainerUtil.newArrayList(); for (BuildParticipant participant : myCompositeParticipants) { result.myCompositeParticipants.add(participant.copy()); } result.myCompositeDefinitionSource = myCompositeDefinitionSource; return result; } } }