All Downloads are FREE. Search and download functionalities are using the official Maven repository.

ai.api.AIServiceContextBuilder Maven / Gradle / Ivy

package ai.api;

import java.util.UUID;

/***********************************************************************************************************************
 *
 * API.AI Java SDK - client-side libraries for API.AI
 * =================================================
 *
 * Copyright (C) 2016 by Speaktoit, Inc. (https://www.speaktoit.com)
 * https://www.api.ai
 *
 * *********************************************************************************************************************
 *
 * 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.
 *
 ***********************************************************************************************************************/

/**
 * Builds {@link AIServiceContext} to be used in {@link AIDataService} 
 */
class AIServiceContextBuilder {
	
	String sessionId;
	
	/**
	 * Default builder constructor. 
	 * Does not initialise any building options.
	 */
	public AIServiceContextBuilder() {
	}
	
	/**
	 * @return Current sessionId value or null if
	 * value was not defined
	 */
	public String getSessionId() {
		return sessionId;
	}
	
	/**
	 * Replace current session id with given value
	 * @param sessionId Unique string session id. Cannot be null
	 * 
	 * @throws IllegalArgumentException Thrown if sessionId parameter value is null
	 */
	public AIServiceContextBuilder setSessionId(final String sessionId) {
		if (sessionId == null) {
			throw new IllegalArgumentException("sessionId cannot be null");
		}
		this.sessionId = sessionId;
		return this;
	}
	
	/**
	 * Replace current session id with some new random value
	 */
	public AIServiceContextBuilder generateSessionId() {
		this.sessionId = createRandomSessionId();
		return this;
	}
	
	/**
	 * Build new context instance
	 * 
	 * @throws IllegalStateException Thrown if session id was not defined
	 */
	public AIServiceContext build() {
		if (sessionId == null) {
			throw new IllegalStateException("Session id is undefined");
		}
		return new PlainAIServiceContext(sessionId);
	}
	
	public static AIServiceContext buildFromSessionId(String sessionId) {
		return new AIServiceContextBuilder().setSessionId(sessionId).build();
	}
	
	private static String createRandomSessionId() {
		return UUID.randomUUID().toString();
	}
	
	private static class PlainAIServiceContext implements AIServiceContext {
		
		private final String sessionId;
		
		public PlainAIServiceContext(String sessionId) {
			this.sessionId = sessionId;
		}

		@Override
		public String getSessionId() {
			return sessionId;
		}
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy