Beispiel #1
0
 /**
  * Opens the specified database.
  *
  * @param name name of database
  * @param ctx database context
  * @return data reference
  * @throws IOException I/O exception
  */
 public static Data open(final String name, final Context ctx) throws IOException {
   synchronized (ctx.dbs) {
     Data data = ctx.dbs.pin(name);
     if (data == null) {
       // check if database exists
       if (!ctx.globalopts.dbexists(name)) throw new BaseXException(dbnf(name));
       data = new DiskData(name, ctx);
       ctx.dbs.add(data);
     }
     // check permissions
     if (!ctx.perm(Perm.READ, data.meta)) {
       Close.close(data, ctx);
       throw new BaseXException(PERM_REQUIRED_X, Perm.READ);
     }
     return data;
   }
 }
Beispiel #2
0
  /**
   * Lists resources of the specified database.
   *
   * @return success flag
   * @throws IOException I/O exception
   */
  private boolean listDB() throws IOException {
    final String db = args[0];
    final String path = args[1] != null ? args[1] : "";
    if (!Databases.validName(db)) return error(NAME_INVALID_X, db);

    final Table table = new Table();
    table.description = RESOURCES;
    table.header.add(INPUT_PATH);
    table.header.add(TYPE);
    table.header.add(MimeTypes.CONTENT_TYPE);
    table.header.add(SIZE);

    try {
      // add xml documents
      final Data data = Open.open(db, context);
      final Resources res = data.resources;
      final IntList il = res.docs(path);
      final int ds = il.size();
      for (int i = 0; i < ds; i++) {
        final int pre = il.get(i);
        final TokenList tl = new TokenList(3);
        final byte[] file = data.text(pre, true);
        tl.add(file);
        tl.add(DataText.M_XML);
        tl.add(MimeTypes.APP_XML);
        tl.add(data.size(pre, Data.DOC));
        table.contents.add(tl);
      }
      // add binary resources
      for (final byte[] file : res.binaries(path)) {
        final String f = string(file);
        final TokenList tl = new TokenList(3);
        tl.add(file);
        tl.add(DataText.M_RAW);
        tl.add(MimeTypes.get(f));
        tl.add(data.meta.binary(f).length());
        table.contents.add(tl);
      }
      Close.close(data, context);
    } catch (final IOException ex) {
      return error(Util.message(ex));
    }
    out.println(table.sort().finish());
    return true;
  }