package org.sigmah.offline.indexeddb;
/*
* #%L
* Sigmah
* %%
* Copyright (C) 2010 - 2016 URD
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/gpl-3.0.html>.
* #L%
*/
import java.util.HashMap;
import java.util.Map;
/**
* Utility class to handle stores in an IndexedDB database.
*
* @author Raphaƫl Calabro (raphael.calabro@netapsys.fr)
*/
public final class Stores {
private Stores() {
// No initialization.
}
/**
* Calculate the version of the given database schema.
*
* @param <S> Schema type.
* @param stores Schema type class.
* @return Version number.
*/
public static <S extends Enum<S> & Schema> int getVersion(final Class<S> stores) {
int version = 0;
for (final S store : stores.getEnumConstants()) {
version += 100 + store.getIndexes().size();
}
return version;
}
/**
* Creates a map from the given array.
*
* @param indexes Array of String containing name, path couple.
* @return A Map.
*/
public static Map<String, String> toIndexMap(final String[] indexes) {
final HashMap<String, String> map = new HashMap<String, String>();
for (int i = 0; i < indexes.length; i += 2) {
map.put(indexes[i], indexes[i + 1]);
}
return map;
}
}