⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 adminclient.java

📁 Java的面向对象数据库系统的源代码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
// 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 + -