fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major/**
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major *
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * Copyright (c) 2006 Sun Microsystems Inc. All Rights Reserved
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major *
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * The contents of this file are subject to the terms
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * of the Common Development and Distribution License
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * (the License). You may not use this file except in
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * compliance with the License.
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major *
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * You can obtain a copy of the License at
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * https://opensso.dev.java.net/public/CDDLv1.0.html or
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * opensso/legal/CDDLv1.0.txt
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * See the License for the specific language governing
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * permission and limitations under the License.
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major *
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * When distributing Covered Code, include this CDDL
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * Header Notice in each file and include the License file
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * at opensso/legal/CDDLv1.0.txt.
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * If applicable, add the following below the CDDL Header,
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * with the fields enclosed by brackets [] replaced by
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * your own identifying information:
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * "Portions Copyrighted [year] [name of copyright owner]"
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major *
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * $Id: CreateLayoutTask.java,v 1.3 2008/06/25 05:51:18 qcheng Exp $
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major *
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major */
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Majorpackage com.sun.identity.install.tools.configurator;
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Majorimport java.io.File;
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Majorimport java.util.Map;
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Majorimport com.sun.identity.install.tools.util.ConfigUtil;
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Majorimport com.sun.identity.install.tools.util.Debug;
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Majorimport com.sun.identity.install.tools.util.FileUtils;
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Majorimport com.sun.identity.install.tools.util.LocalizedMessage;
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Majorimport com.sun.identity.install.tools.admin.ToolsConfiguration;
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Majorpublic class CreateLayoutTask implements ITask, InstallConstants {
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major public boolean execute(String name, IStateAccess stateAccess,
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major Map properties) throws InstallException {
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major String productHome = ConfigUtil.getHomePath();
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major String instanceName = stateAccess.getInstanceName();
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major Debug.log("LayoutHandlerTask.execute() - Creating instance "
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major + "directory layout for '" + instanceName);
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major // Populate the directory paths
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major String instanceDirPath = productHome + FILE_SEP + instanceName;
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major String logsDirPath = instanceDirPath + FILE_SEP
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major + INSTANCE_LOGS_DIR_NAME;
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major String baseConfigDirPath = productHome + FILE_SEP +
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major INSTANCE_CONFIG_DIR_NAME;
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major String configDirPath = instanceDirPath + FILE_SEP
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major + INSTANCE_CONFIG_DIR_NAME;
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major String debugLogsDirPath = logsDirPath + FILE_SEP
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major + INSTANCE_DEBUG_DIR_NAME;
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major String auditLogsDirPath = logsDirPath + FILE_SEP
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major + INSTANCE_AUDIT_DIR_NAME;
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major createDir(instanceDirPath);
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major createDir(configDirPath);
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major createDir(logsDirPath);
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major createDir(debugLogsDirPath);
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major createDir(auditLogsDirPath);
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major // Add related tokens - which are related to this Layout class
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major stateAccess.put(STR_AUDIT_DIR_PREFIX_TAG, auditLogsDirPath);
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major stateAccess.put(STR_CONFIG_DIR_PREFIX_TAG, configDirPath);
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major stateAccess.put(STR_DEBUG_DIR_PREFIX_TAG, debugLogsDirPath);
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major stateAccess.put(STR_DEBUG_LEVEL_TAG, STR_DEBUG_LEVEL_DEFAULT_VALUE);
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major stateAccess.put(STR_LOG_CONFIG_FILE_PATH, baseConfigDirPath + FILE_SEP +
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major STR_LOG_CONFIG_FILENAME);
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major // All the operations should succeed. If one of them does not then an
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major // Exception is thrown as it would be a Fatal Exception. Hence this
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major // the method always returns a true.
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major return true;
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major }
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major public boolean rollBack(String name, IStateAccess stateAccess,
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major Map properties) throws InstallException {
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major String productHome = ConfigUtil.getHomePath();
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major String instanceName = stateAccess.getInstanceName();
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major Debug.log("LayoutHandlerTask.rollBack() - Deleting instance "
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major + "directory '" + instanceName + "' and its contents");
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major // Populate the directory paths
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major String instanceDirPath = productHome + FILE_SEP + instanceName;
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major File instanceDir = new File(instanceDirPath);
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major return FileUtils.removeDir(instanceDir);
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major }
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major public LocalizedMessage getExecutionMessage(IStateAccess stateAccess,
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major Map properties) {
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major Object[] args = { ToolsConfiguration.getProductShortName(),
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major stateAccess.getInstanceName() };
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major LocalizedMessage message = LocalizedMessage.get(
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major LOC_TSK_MSG_CREATE_LAYOUT_EXECUTE, args);
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major return message;
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major }
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major public LocalizedMessage getRollBackMessage(IStateAccess stateAccess,
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major Map properties) {
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major Object[] args = { stateAccess.getInstanceName() };
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major LocalizedMessage message = LocalizedMessage.get(
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major LOC_TSK_MSG_DELETE_LAYOUT_ROLL_BACK, args);
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major return message;
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major }
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major private void createDir(String dirName) throws InstallException {
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major Debug.log("LayoutHandlerTask.createDir() - Creating Dir for: "
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major + dirName);
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major File dir = new File(dirName);
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major if (!dir.mkdir()) {
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major Debug.log("LayoutHandlerTask.createDir() - Error Unable to "
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major + "create Dir for: " + dirName);
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major // If the creation is not successful throw an Exception
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major LocalizedMessage lMessage = LocalizedMessage.get(
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major LOC_DR_ERR_DIR_CREATE, new Object[] { dirName });
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major throw new InstallException(lMessage);
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major }
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major }
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major /** Field LOC_DR_ERR_DIR_CREATE **/
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major public static final String LOC_DR_ERR_DIR_CREATE = "DR_ERR_DIR_CREATE";
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major public static final String LOC_TSK_MSG_CREATE_LAYOUT_EXECUTE =
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major "TSK_MSG_CREATE_LAYOUT_EXECUTE";
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major public static final String LOC_TSK_MSG_DELETE_LAYOUT_ROLL_BACK =
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major "TSK_MSG_CREATE_LAYOUT_ROLLBACK";
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major public static final String STR_DEBUG_LEVEL_TAG = "DEBUG_LEVEL";
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major public static final String STR_DEBUG_LEVEL_DEFAULT_VALUE = "error";
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major}