1 /* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License, Version 1.0 only 6 * (the "License"). You may not use this file except in compliance 7 * with the License. 8 * 9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10 * or http://www.opensolaris.org/os/licensing. 11 * See the License for the specific language governing permissions 12 * and limitations under the License. 13 * 14 * When distributing Covered Code, include this CDDL HEADER in each 15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16 * If applicable, add the following below this CDDL HEADER, with the 17 * fields enclosed by brackets "[]" replaced with your own identifying 18 * information: Portions Copyright [yyyy] [name of copyright owner] 19 * 20 * CDDL HEADER END 21 */ 22 /* 23 * ident "%Z%%M% %I% %E% SMI" 24 * 25 * Copyright 2001-2002 Sun Microsystems, Inc. All rights reserved. 26 * Use is subject to license terms. 27 */ 28 package com.sun.dhcpmgr.cli.dhcpconfig; 29 30 import java.text.MessageFormat; 31 32 import com.sun.dhcpmgr.cli.common.DhcpCliFunction; 33 import com.sun.dhcpmgr.cli.common.DhcpCliPrint; 34 import com.sun.dhcpmgr.data.*; 35 import com.sun.dhcpmgr.bridge.BridgeException; 36 import com.sun.dhcpmgr.bridge.ExistsException; 37 38 import com.sun.dhcpmgr.common.Importer; 39 import com.sun.dhcpmgr.common.ImportController; 40 41 /** 42 * The main class for the "import move data" functionality of dhcpconfig. 43 */ 44 public class ImportData extends DhcpCfgFunction implements Importer { 45 46 /** 47 * The valid options associated with importing data. 48 */ 49 private static final int supportedOptions[] = { 50 DhcpCfg.FORCE, 51 DhcpCfg.SIGHUP 52 }; 53 54 /** 55 * The name of the import file. 56 */ 57 private String importFile; 58 59 /** 60 * Simple constructor 61 */ 62 public ImportData(String importFile) { 63 64 validOptions = supportedOptions; 65 this.importFile = importFile; 66 67 } // constructor 68 69 /** 70 * Returns the option flag for this function. 71 * @returns the option flag for this function. 72 */ 73 public int getFunctionFlag() { 74 return (DhcpCfg.IMPORT_DATA); 75 } 76 77 /** 78 * Executes the "import move data" functionality. 79 * @return DhcpCfg.SUCCESS or DhcpCfg.FAILURE 80 */ 81 public int execute() { 82 83 // Make sure that server is configured as a DHCP server. 84 // 85 if (!isServerConfigured()) { 86 return (DhcpCfg.FAILURE); 87 } 88 89 // Check the validity of the data store version. 90 // 91 if (!isVersionValid(false)) { 92 return (DhcpCfg.FAILURE); 93 } 94 95 // Shall we overwrite any existing, conflicting data? 96 boolean force = options.isSet(DhcpCfg.FORCE); 97 98 // Create import controller and do the import 99 ImportController controller = new ImportController(this, getDhcpMgr()); 100 controller.setFile(importFile); 101 if (!controller.importData(force)) { 102 return (DhcpCfg.FAILURE); 103 } 104 105 // Signal server if user requested 106 try { 107 if (options.isSet(DhcpCfg.SIGHUP)) { 108 getSvcMgr().reload(); 109 } 110 } catch (Throwable e) { 111 printErrMessage(getString("sighup_failed")); 112 return (DhcpCfg.FAILURE); 113 } 114 115 return (DhcpCfg.SUCCESS); 116 117 } // execute 118 119 public void initializeProgress(int length) { 120 // Do nothing 121 } 122 123 public void updateProgress(int done, String message) { 124 // Just print the message 125 printMessage(message); 126 } 127 128 public void displayError(String message) { 129 Object [] arguments = new Object[1]; 130 arguments[0] = message; 131 printErrMessage(getString("import_error_msg"), arguments); 132 } 133 134 public void displayErrors(String msg, String label, ActionError [] errs) { 135 printErrMessage(msg); 136 String [] args = new String[3]; 137 args[0] = label; 138 MessageFormat form = 139 new MessageFormat(getString("import_action_error")); 140 for (int i = 0; i < errs.length; ++i) { 141 args[1] = errs[i].getName(); 142 args[2] = errs[i].getException().getMessage(); 143 printErrMessage(form.format(args)); 144 } 145 } 146 147 } // ImportData