public void initializeServerWithPersistDataInServer() throws IOException,
            CubeXmlFileNotExistsException, DocumentException,
            CubeAlreadyExistsException,
            CorrespondingDimensionNotExistsException,
            SchemaAlreadyExistsException,
            CorrespondingSchemaNotExistsException,
            CubeElementsNotExistsException {
        SchemaClientInterface schemaClient = SchemaClient.getSchemaClient();
        // read Schemas
        PersistSchemaReader persistSchemaReader = new PersistSchemaReader();
        SortedSet<Schema> schemas = persistSchemaReader.read();
        // read cubes
        PersistCubeReader persistCubeReader = new PersistCubeReader();
        SortedSet<Cube> cubes = persistCubeReader.read();
        // check whether cubes, schemas and cubeElements consistent
        String schemaName;
        String cubeIdentifier;
        long numberOfPages;
        for (Cube cube : cubes) {
            schemaName = cube.getSchemaName();
            // if not find, CorrespondingSchemaNotExistsException will be thrown
            Schema schema = findCorrespondingSchema(schemaName, schemas);
            cubeIdentifier = cube.getIdentifier();
            numberOfPages = PageHelper.getNumberOfPages(schema);
            if (!isCubeElementsExists(cubeIdentifier, numberOfPages)) {
                throw new CubeElementsNotExistsException();
            }
        }
        // add schemas
        for (Schema schema : schemas) {
            schemaClient.addSchema(schema);
        }
        // add cubes
        for (Cube cube : cubes) {
            schemaClient.addCube(cube);
        }
    }