/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You 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.apache.zeppelin.interpreter; import java.util.ArrayList; import java.util.List; /** * */ public class InterpreterOption { public static final transient String SHARED = "shared"; public static final transient String SCOPED = "scoped"; public static final transient String ISOLATED = "isolated"; boolean remote; String host = null; int port = -1; String perNote; String perUser; boolean isExistingProcess; boolean setPermission; List<String> users; boolean isUserImpersonate; public boolean isExistingProcess() { return isExistingProcess; } public void setExistingProcess(boolean isExistingProcess) { this.isExistingProcess = isExistingProcess; } public void setPort(int port) { this.port = port; } public void setHost(String host) { this.host = host; } public boolean permissionIsSet() { return setPermission; } public void setUserPermission(boolean setPermission) { this.setPermission = setPermission; } public List<String> getUsers() { return users; } public boolean isUserImpersonate() { return isUserImpersonate; } public void setUserImpersonate(boolean userImpersonate) { isUserImpersonate = userImpersonate; } public InterpreterOption() { this(false); } public InterpreterOption(boolean remote) { this(remote, SHARED, SHARED); } public InterpreterOption(boolean remote, String perUser, String perNote) { if (perUser == null) { throw new NullPointerException("perUser can not be null."); } if (perNote == null) { throw new NullPointerException("perNote can not be null."); } this.remote = remote; this.perUser = perUser; this.perNote = perNote; } public static InterpreterOption fromInterpreterOption(InterpreterOption other) { InterpreterOption option = new InterpreterOption(); option.remote = other.remote; option.host = other.host; option.port = other.port; option.perNote = other.perNote; option.perUser = other.perUser; option.isExistingProcess = other.isExistingProcess; option.setPermission = other.setPermission; option.users = (null == other.users) ? new ArrayList<String>() : new ArrayList<>(other.users); return option; } public boolean isRemote() { return remote; } public void setRemote(boolean remote) { this.remote = remote; } public String getHost() { return host; } public int getPort() { return port; } public boolean perUserShared() { return SHARED.equals(perUser); } public boolean perUserScoped() { return SCOPED.equals(perUser); } public boolean perUserIsolated() { return ISOLATED.equals(perUser); } public boolean perNoteShared() { return SHARED.equals(perNote); } public boolean perNoteScoped() { return SCOPED.equals(perNote); } public boolean perNoteIsolated() { return ISOLATED.equals(perNote); } public boolean isProcess() { return perUserIsolated() || perNoteIsolated(); } public boolean isSession() { return perUserScoped() || perNoteScoped(); } public void setPerNote(String perNote) { this.perNote = perNote; } public void setPerUser(String perUser) { this.perUser = perUser; } }