/*
* Copyright (C) 2015 hops.io.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.hops.leaderElection;
import io.hops.exception.StorageException;
import io.hops.exception.TransactionContextException;
import io.hops.metadata.common.entity.StringVariable;
import io.hops.metadata.common.entity.Variable;
import io.hops.metadata.election.entity.LeVariables;
import io.hops.transaction.EntityManager;
public class VarsRegister {
public static long getMaxID(Variable.Finder finder)
throws TransactionContextException, StorageException {
String params = (String) getVariable(finder).getValue();
LeVariables leParams = LeVariables.parseString(params);
return leParams.getMaxId();
}
public static long getTimePeriod(Variable.Finder finder)
throws TransactionContextException, StorageException {
String params = (String) getVariable(finder).getValue();
LeVariables leParams = LeVariables.parseString(params);
return leParams.getTimePeriod();
}
public static boolean isEvict(Variable.Finder finder)
throws TransactionContextException, StorageException {
String params = (String) getVariable(finder).getValue();
LeVariables leParams = LeVariables.parseString(params);
return leParams.isEvictFlag();
}
public static void setMaxID(Variable.Finder finder, long val)
throws TransactionContextException, StorageException {
String params = (String) getVariable(finder).getValue();
LeVariables leParams = LeVariables.parseString(params);
leParams.setMaxId(val);
updateVariable(new StringVariable(finder, leParams.toString()));
}
public static void setTimePeriod(Variable.Finder finder, long val)
throws TransactionContextException, StorageException {
String params = (String) getVariable(finder).getValue();
LeVariables leParams = LeVariables.parseString(params);
leParams.setTimePeriod(val);
updateVariable(new StringVariable(finder, leParams.toString()));
}
public static void setEvictFlag(Variable.Finder finder, boolean val)
throws TransactionContextException, StorageException {
String params = (String) getVariable(finder).getValue();
LeVariables leParams = LeVariables.parseString(params);
leParams.setEvictFlag(val);
updateVariable(new StringVariable(finder, leParams.toString()));
}
private static void updateVariable(Variable var)
throws TransactionContextException, StorageException {
EntityManager.update(var);
}
private static Variable getVariable(Variable.Finder varType)
throws TransactionContextException, StorageException {
return EntityManager.find(varType);
}
public static void registerYarnDefaultValues() {
LeVariables param = new LeVariables(false, 0, 0);
StringVariable YarnVars =
new StringVariable(Variable.Finder.YarnLeParams, param.toString());
Variable.registerVariableDefaultValue(Variable.Finder.YarnLeParams,
YarnVars.getBytes());
}
public static void registerHdfsDefaultValues() {
LeVariables param = new LeVariables(false, 0, 0);
StringVariable hdfsVars =
new StringVariable(Variable.Finder.HdfsLeParams, param.toString());
Variable.registerVariableDefaultValue(Variable.Finder.HdfsLeParams,
hdfsVars.getBytes());
}
}