/******************************************************************************* * Copyright (c) 2012-2017 Codenvy, S.A. * 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: * Codenvy, S.A. - initial API and implementation *******************************************************************************/ package org.eclipse.che.api.workspace.server.model.impl; import org.eclipse.che.api.core.model.machine.Machine; import org.eclipse.che.api.core.model.workspace.WorkspaceRuntime; import org.eclipse.che.api.machine.server.model.impl.MachineImpl; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Objects; import static java.util.stream.Collectors.toList; /** * Data object for {@link WorkspaceRuntime}. * * @author Yevhenii Voevodin */ public class WorkspaceRuntimeImpl implements WorkspaceRuntime { private final String activeEnv; private String rootFolder; private MachineImpl devMachine; private List<MachineImpl> machines; public WorkspaceRuntimeImpl(String activeEnv, Collection<? extends Machine> machines) { this.activeEnv = activeEnv; if (machines != null) { this.machines = new ArrayList<>(machines.size()); for (Machine machine : machines) { if (machine.getConfig().isDev()) { if (machine.getRuntime() != null) { rootFolder = machine.getRuntime().projectsRoot(); } devMachine = new MachineImpl(machine); this.machines.add(devMachine); } else { this.machines.add(new MachineImpl(machine)); } } } } public WorkspaceRuntimeImpl(String activeEnv, String rootFolder, Collection<? extends Machine> machines, Machine devMachine) { this.activeEnv = activeEnv; this.rootFolder = rootFolder; if (devMachine != null) { this.devMachine = new MachineImpl(devMachine); } if (machines != null) { this.machines = machines.stream() .map(MachineImpl::new) .collect(toList()); } } public WorkspaceRuntimeImpl(WorkspaceRuntime runtime) { this(runtime.getActiveEnv(), runtime.getRootFolder(), runtime.getMachines(), runtime.getDevMachine()); } @Override public String getActiveEnv() { return activeEnv; } @Override public String getRootFolder() { return rootFolder; } public void setRootFolder(String rootFolder) { this.rootFolder = rootFolder; } @Override public MachineImpl getDevMachine() { return devMachine; } public void setDevMachine(MachineImpl devMachine) { this.devMachine = devMachine; } @Override public List<MachineImpl> getMachines() { if (machines == null) { machines = new ArrayList<>(); } return machines; } public void setMachines(List<MachineImpl> machines) { this.machines = machines; } @Override public boolean equals(Object o) { if (this == o) return true; if (!(o instanceof WorkspaceRuntimeImpl)) return false; WorkspaceRuntimeImpl that = (WorkspaceRuntimeImpl)o; return Objects.equals(activeEnv, that.activeEnv) && Objects.equals(rootFolder, that.rootFolder) && Objects.equals(devMachine, that.devMachine) && Objects.equals(machines, that.machines); } @Override public int hashCode() { return Objects.hash(activeEnv, rootFolder, devMachine, machines); } @Override public String toString() { return "WorkspaceRuntimeImpl{" + "activeEnv='" + activeEnv + '\'' + ", rootFolder='" + rootFolder + '\'' + ", devMachine=" + devMachine + ", machines=" + machines + '}'; } }