Search in sources :

Example 41 with SirixIOException

use of org.sirix.exception.SirixIOException in project sirix by sirixdb.

the class ResourceConfiguration method serialize.

/**
 * Serialize the configuration.
 *
 * @param config configuration to serialize
 * @throws SirixIOException if an I/O error occurs
 */
public static void serialize(final ResourceConfiguration config) throws SirixIOException {
    final Path configFile = config.getConfigFile();
    try (final FileWriter fileWriter = new FileWriter(configFile.toFile());
        final JsonWriter jsonWriter = new JsonWriter(fileWriter)) {
        jsonWriter.beginObject();
        // Versioning.
        jsonWriter.name(JSONNAMES[0]);
        jsonWriter.beginObject();
        jsonWriter.name(JSONNAMES[1]).value(config.mRevisionKind.name());
        jsonWriter.name(JSONNAMES[2]).value(config.mRevisionsToRestore);
        jsonWriter.endObject();
        // ByteHandlers.
        final ByteHandlePipeline byteHandler = config.mByteHandler;
        jsonWriter.name(JSONNAMES[3]);
        jsonWriter.beginArray();
        for (final ByteHandler handler : byteHandler.getComponents()) {
            jsonWriter.value(handler.getClass().getName());
        }
        jsonWriter.endArray();
        // Storage type.
        jsonWriter.name(JSONNAMES[4]).value(config.mStorage.name());
        // Hashing type.
        jsonWriter.name(JSONNAMES[5]).value(config.mHashKind.name());
        // Text compression.
        jsonWriter.name(JSONNAMES[6]).value(config.mCompression);
        // Path summary.
        jsonWriter.name(JSONNAMES[7]).value(config.mPathSummary);
        // ID.
        jsonWriter.name(JSONNAMES[8]).value(config.mID);
        // Dewey IDs stored or not.
        jsonWriter.name(JSONNAMES[9]).value(config.mDeweyIDsStored);
        // Persistenter.
        jsonWriter.name(JSONNAMES[10]).value(config.mPersistenter.getClass().getName());
        jsonWriter.endObject();
    } catch (final IOException e) {
        throw new SirixIOException(e);
    }
    // Database config.
    DatabaseConfiguration.serialize(config.mDBConfig);
}
Also used : Path(java.nio.file.Path) FileWriter(java.io.FileWriter) ByteHandlePipeline(org.sirix.io.bytepipe.ByteHandlePipeline) ByteHandler(org.sirix.io.bytepipe.ByteHandler) SirixIOException(org.sirix.exception.SirixIOException) IOException(java.io.IOException) JsonWriter(com.google.gson.stream.JsonWriter) SirixIOException(org.sirix.exception.SirixIOException)

Example 42 with SirixIOException

use of org.sirix.exception.SirixIOException in project sirix by sirixdb.

the class ResourceConfiguration method deserialize.

/**
 * Deserializing a Resource configuration from a JSON-file from the persistent storage.
 *
 * @param file where the resource lies in.
 * @return a complete {@link ResourceConfiguration} instance
 * @throws SirixIOException if an I/O error occurs
 */
public static ResourceConfiguration deserialize(final Path file) throws SirixIOException {
    try {
        final Path configFile = file.resolve(ResourcePaths.CONFIG_BINARY.getFile());
        final FileReader fileReader = new FileReader(configFile.toFile());
        final JsonReader jsonReader = new JsonReader(fileReader);
        jsonReader.beginObject();
        // Versioning.
        String name = jsonReader.nextName();
        assert name.equals(JSONNAMES[0]);
        jsonReader.beginObject();
        name = jsonReader.nextName();
        assert name.equals(JSONNAMES[1]);
        final Versioning revisioning = Versioning.valueOf(jsonReader.nextString());
        name = jsonReader.nextName();
        assert name.equals(JSONNAMES[2]);
        final int revisionToRestore = jsonReader.nextInt();
        jsonReader.endObject();
        // ByteHandlers.
        final List<ByteHandler> handlerList = new ArrayList<>();
        name = jsonReader.nextName();
        assert name.equals(JSONNAMES[3]);
        jsonReader.beginArray();
        while (jsonReader.hasNext()) {
            final Class<?> handlerClazz = Class.forName(jsonReader.nextString());
            final Constructor<?> handlerCons = handlerClazz.getConstructors()[0];
            handlerList.add((ByteHandler) handlerCons.newInstance());
        }
        jsonReader.endArray();
        final ByteHandlePipeline pipeline = new ByteHandlePipeline(handlerList.toArray(new ByteHandler[handlerList.size()]));
        // Storage type.
        name = jsonReader.nextName();
        assert name.equals(JSONNAMES[4]);
        final StorageType storage = StorageType.valueOf(jsonReader.nextString());
        // Hashing type.
        name = jsonReader.nextName();
        assert name.equals(JSONNAMES[5]);
        final HashKind hashing = HashKind.valueOf(jsonReader.nextString());
        // Text compression.
        name = jsonReader.nextName();
        assert name.equals(JSONNAMES[6]);
        final boolean compression = jsonReader.nextBoolean();
        // Path summary.
        name = jsonReader.nextName();
        assert name.equals(JSONNAMES[7]);
        final boolean pathSummary = jsonReader.nextBoolean();
        // Unique ID.
        name = jsonReader.nextName();
        assert name.equals(JSONNAMES[8]);
        final int ID = jsonReader.nextInt();
        name = jsonReader.nextName();
        assert name.equals(JSONNAMES[9]);
        final boolean deweyIDsStored = jsonReader.nextBoolean();
        name = jsonReader.nextName();
        assert name.equals(JSONNAMES[10]);
        final Class<?> persistenterClazz = Class.forName(jsonReader.nextString());
        final Constructor<?> persistenterConstr = persistenterClazz.getConstructors()[0];
        final RecordPersistenter persistenter = (RecordPersistenter) persistenterConstr.newInstance();
        jsonReader.endObject();
        jsonReader.close();
        fileReader.close();
        // Deserialize database config.
        final DatabaseConfiguration dbConfig = DatabaseConfiguration.deserialize(file.getParent().getParent());
        // Builder.
        final ResourceConfiguration.Builder builder = new ResourceConfiguration.Builder(file.getFileName().toString(), dbConfig);
        builder.byteHandlerPipeline(pipeline).hashKind(hashing).versioningApproach(revisioning).revisionsToRestore(revisionToRestore).storageType(storage).persistenter(persistenter).useTextCompression(compression).buildPathSummary(pathSummary).useDeweyIDs(deweyIDsStored);
        // Deserialized instance.
        final ResourceConfiguration config = new ResourceConfiguration(builder);
        return config.setID(ID);
    } catch (IOException | ClassNotFoundException | IllegalArgumentException | InstantiationException | IllegalAccessException | InvocationTargetException e) {
        throw new SirixIOException(e);
    }
}
Also used : ArrayList(java.util.ArrayList) HashKind(org.sirix.access.HashKind) ByteHandler(org.sirix.io.bytepipe.ByteHandler) SirixIOException(org.sirix.exception.SirixIOException) JsonReader(com.google.gson.stream.JsonReader) FileReader(java.io.FileReader) ByteHandlePipeline(org.sirix.io.bytepipe.ByteHandlePipeline) Path(java.nio.file.Path) StorageType(org.sirix.io.StorageType) SirixIOException(org.sirix.exception.SirixIOException) IOException(java.io.IOException) InvocationTargetException(java.lang.reflect.InvocationTargetException) Versioning(org.sirix.settings.Versioning) RecordPersistenter(org.sirix.node.interfaces.RecordPersistenter)

Aggregations

SirixIOException (org.sirix.exception.SirixIOException)42 IOException (java.io.IOException)14 DatabaseException (com.sleepycat.je.DatabaseException)9 DatabaseEntry (com.sleepycat.je.DatabaseEntry)7 UberPage (org.sirix.page.UberPage)6 OperationStatus (com.sleepycat.je.OperationStatus)5 Path (java.nio.file.Path)5 QNm (org.brackit.xquery.atomic.QNm)5 PageReference (org.sirix.page.PageReference)5 UnorderedKeyValuePage (org.sirix.page.UnorderedKeyValuePage)5 UncheckedExecutionException (com.google.common.util.concurrent.UncheckedExecutionException)4 ExecutionException (java.util.concurrent.ExecutionException)4 Str (org.brackit.xquery.atomic.Str)4 Page (org.sirix.page.interfaces.Page)4 UncheckedIOException (java.io.UncheckedIOException)3 HashSet (java.util.HashSet)3 QueryException (org.brackit.xquery.QueryException)3 Item (org.brackit.xquery.xdm.Item)3 Iter (org.brackit.xquery.xdm.Iter)3 IndexController (org.sirix.access.IndexController)3