📄 adminclient.java
字号:
// You can redistribute this software and/or modify it under the terms of
// the Ozone Library License version 1 published by ozone-db.org.
//
// The original code and portions created by SMB are
// Copyright (C) 1997-@year@ by SMB GmbH. All rights reserved.
//
// $Id: AdminClient.java,v 1.4 2002/09/12 14:43:31 per_nyfelt Exp $
package org.ozoneDB.core.admin;
import java.io.*;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.apache.xml.serialize.OutputFormat;
import org.apache.xml.serialize.XMLSerializer;
import org.ozoneDB.DxLib.DxCollection;
import org.ozoneDB.DxLib.DxIterator;
import org.ozoneDB.ExternalDatabase;
import org.ozoneDB.ExternalTransaction;
import org.ozoneDB.core.*;
import org.ozoneDB.xml.util.*;
import org.xml.sax.InputSource;
import org.xml.sax.helpers.ParserAdapter;
/**
* @version $Revision: 1.4 $ $Date: 2002/09/12 14:43:31 $
* @author <a href="http://www.smb-tec.com">SMB</a>
* @author <a href="http://www.medium.net/">Medium.net</a>
*/
public class AdminClient implements SAXChunkProducerDelegate {
final static String COMMAND_NU = "newuser";
final static String COMMAND_RU = "removeuser";
final static String COMMAND_AU = "allusers";
final static String COMMAND_NG = "newgroup";
final static String COMMAND_RG = "removegroup";
final static String COMMAND_AG = "allgroups";
final static String COMMAND_U2G = "user2group";
final static String COMMAND_SD = "shutdown";
final static String COMMAND_TXS = "txs";
final static String COMMAND_BACKUP = "backup";
final static String COMMAND_RESTORE = "restore";
final static String COMMAND_START_GARBAGECOLLECTION = "startGC";
final static String DB_URL = "ozonedb:remote://localhost:3333";
String dbURL = DB_URL;
PrintWriter out;
PrintWriter verboseOut;
ExternalDatabase db;
Admin admin;
public static void main(String[] args) throws Exception {
if (args.length == 0 || args[0].equals("-h") || args[0].equals("-help")) {
printUsage();
System.exit(1);
}
String command = args[0];
AdminClient client = new AdminClient(args);
try {
client.open();
if (command.equals(COMMAND_NU)) {
client.newUser(args);
} else if (command.equals(COMMAND_AU)) {
client.allUsers(args);
} else if (command.equals(COMMAND_RU)) {
client.removeUser(args);
} else if (command.equals(COMMAND_NG)) {
client.newGroup(args);
} else if (command.equals(COMMAND_AG)) {
client.allGroups(args);
} else if (command.equals(COMMAND_RG)) {
client.removeGroup(args);
} else if (command.equals(COMMAND_U2G)) {
client.addUser2Group(args);
} else if (command.equals(COMMAND_TXS)) {
client.numberOfTxs();
} else if (command.equals(COMMAND_SD)) {
client.shutdown();
} else if (command.equals(COMMAND_BACKUP)) {
client.backup(args);
} else if (command.equals(COMMAND_RESTORE)) {
client.restore(args);
} else if (command.equals(COMMAND_START_GARBAGECOLLECTION)) {
client.startGarbageCollection();
} else {
System.out.println("Unknown command: " + command);
printUsage();
}
} catch (Exception e) {
client.out.println("Error: " + e.getMessage());
e.printStackTrace(client.verboseOut);
}
client.close();
}
// note that on windows systems the equal (=) gets removed and breaks
// the command line into too many arguments
// as a work around, the -name=value in double quotes like
// "-name=value" allows both Windows and UNIX to work correctly
public static void printUsage() {
System.out.println("usage: ozoneAdmin <command> [options]");
System.out.println("");
System.out.println("commands: " + COMMAND_NU + " " + COMMAND_RU + " " + COMMAND_AU + " " +
COMMAND_NG + " " + COMMAND_RG + " " + COMMAND_AG + " " +
COMMAND_TXS + " " + COMMAND_BACKUP + " " + COMMAND_RESTORE + " " + COMMAND_START_GARBAGECOLLECTION);
System.out.println("");
System.out.println("note: all -name=value must be within double quotes for Windows systems!");
System.out.println("");
System.out.println("overall options:");
System.out.println(" \"-dburl=<URL>\" The URL of the database. (default: " + DB_URL + ")");
System.out.println(" \"-verbose\" Be verbose.");
System.out.println("");
System.out.println(COMMAND_NU + " options:");
System.out.println(" \"-name=<username>\"");
System.out.println(" \"-id=<userid>\"");
System.out.println("");
System.out.println(COMMAND_RU + " options:");
System.out.println(" \"-name=<username>\"");
System.out.println("");
System.out.println(COMMAND_AU + " options:");
System.out.println(" -");
System.out.println("");
System.out.println(COMMAND_NG + " options:");
System.out.println(" \"-name=<groupname>\"");
System.out.println(" \"-id=<groupid>\"");
System.out.println("");
System.out.println(COMMAND_RG + " options:");
System.out.println(" \"-name=<groupname>\"");
System.out.println("");
System.out.println(COMMAND_AG + " options:");
System.out.println(" -");
System.out.println("");
System.out.println(COMMAND_U2G + " options:");
System.out.println(" \"-username=<username>\"");
System.out.println(" \"-groupname=<groupname>\"");
System.out.println("");
System.out.println(COMMAND_TXS + " options:");
System.out.println(" -");
System.out.println("");
System.out.println(COMMAND_SD + " options:");
System.out.println(" -");
System.out.println("");
System.out.println(COMMAND_BACKUP + " options:");
System.out.println(" \"-outfile=<filename>\" The name of the output file. (default: System.out)");
System.out.println(" \"-compress\" gzip the output.");
System.out.println(" \"-indent\" Indent the XML output.");
// System.out.println( " \"-raw\" Write compiled XML." );
System.out.println("");
System.out.println(COMMAND_RESTORE + " options:");
System.out.println(" \"-infile=<filename>\" The name of the input file. (default: System.in)");
System.out.println(" \"-compress\" Input is gzipped.");
System.out.println("");
System.out.println(COMMAND_START_GARBAGECOLLECTION + ": initiate persistent object garbage collection.");
}
public AdminClient(String[] _args) throws Exception {
// use System.out for normal output and skip verbose output
out = new PrintWriter(System.out, true);
verboseOut = new PrintWriter(new CharArrayWriter());
// check command line arguments
for (int i = 1; i < _args.length; i++) {
String arg = _args[i];
if (arg.startsWith("-dburl=")) {
dbURL = arg.substring(7);
verboseOut.println("dbURL: " + dbURL);
} else if (arg.equals("-v") || arg.equals("-verbose")) {
verboseOut = new PrintWriter(System.out, true);
verboseOut.println("verbose=true");
}
}
}
public synchronized void open() throws Exception {
db = ExternalDatabase.openDatabase(dbURL);
db.reloadClasses();
admin = db.admin();
}
protected synchronized void close() throws Exception {
if (db != null) {
db.close();
db = null;
}
}
protected void newUser(String[] _args) throws Exception {
String name = null;
int id = -1;
// check command line arguments
for (int i = 1; i < _args.length; i++) {
String arg = _args[i];
if (arg.startsWith("-name=")) {
name = arg.substring(6);
verboseOut.println("name=" + name);
} else if (arg.startsWith("-id=")) {
id = Integer.parseInt(arg.substring(4));
verboseOut.println("id=" + id);
} else {
out.println("Unknow argument: " + arg);
}
}
try {
admin.newUser(name, id);
} catch (UserManagerException e) {
out.println("Unable to create new user: " + e.getMessage());
}
}
protected void removeUser(String[] _args) throws Exception {
String name = null;
// check command line arguments
for (int i = 1; i < _args.length; i++) {
String arg = _args[i];
if (arg.startsWith("-name=")) {
name = arg.substring(6);
verboseOut.println("name=" + name);
} else {
out.println("Unknow argument: " + arg);
}
}
try {
admin.removeUser(name);
} catch (UserManagerException e) {
out.println("Unable to remove user: " + e.getMessage());
}
}
protected void allUsers(String[] _args) throws Exception {
DxCollection users = null;
try {
users = admin.allUsers();
} catch (UserManagerException e) {
out.println("Unable to retrieve all users: " + e.getMessage());
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -