/* * Copyright (c) 2014. * * BaasBox - info-at-baasbox.com * * 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 com.baasbox.configuration; import com.baasbox.service.logging.BaasBoxLogger; import com.baasbox.configuration.index.IndexSocialLoginConfiguration; public enum SocialLoginConfiguration implements IProperties{ FACEBOOK_TOKEN("social.facebook.token","Application Token for facebook app",String.class), FACEBOOK_SECRET("social.facebook.secret","Application secret for facebook app",String.class), FACEBOOK_ENABLED("social.facebook.enabled","Facebook link enable flag",Boolean.class), GOOGLE_TOKEN("social.google.token","Application Token for google app",String.class), GOOGLE_SECRET("social.google.secret","Application secret for google app",String.class), GOOGLE_ENABLED("social.google.enabled","Google link enable flag",Boolean.class),; private final String key; private final Class<?> type; private String description; private IPropertyChangeCallback changeCallback; //override private boolean editable=true; private boolean visible=true; private Object overriddenValue=null; private boolean overridden=false; SocialLoginConfiguration(final String iKey, final String iDescription, final Class<?> iType, final IPropertyChangeCallback iChangeAction) { this(iKey, iDescription, iType); changeCallback = iChangeAction; } SocialLoginConfiguration(final String iKey, final String iDescription, final Class<?> iType) { key = iKey; description = iDescription; type = iType; } @Override public void setValue(Object newValue) throws IllegalStateException{ if (!editable) throw new IllegalStateException("The value cannot be changed"); _setValue(newValue); } @Override public void _setValue(Object newValue) { Object parsedValue=null; if (newValue != null) if (type == Boolean.class) parsedValue = Boolean.parseBoolean(newValue.toString()); else if (type == Integer.class) parsedValue = Integer.parseInt(newValue.toString()); else if (type == Float.class) parsedValue = Float.parseFloat(newValue.toString()); else if (type == String.class) parsedValue = newValue.toString(); else parsedValue = newValue; if (changeCallback != null) changeCallback.change(getValue(), newValue); IndexSocialLoginConfiguration idx; try { idx = new IndexSocialLoginConfiguration(); idx.put(key, parsedValue); } catch (Exception e) { BaasBoxLogger.error("Could not store key " + key, e); throw new RuntimeException("Could not store key " + key,e); } } @Override public Object getValue() { if (overridden) return overriddenValue; return _getValue(); } @Override public Object _getValue() { IndexSocialLoginConfiguration idx; try { idx = new IndexSocialLoginConfiguration(); return idx.get(key); } catch (Exception e) { BaasBoxLogger.error("Could not retrieve key " + key, e); } return null; } @Override public boolean getValueAsBoolean() { Object v = getValue(); return v instanceof Boolean ? ((Boolean) v).booleanValue() : Boolean.parseBoolean(v.toString()); } @Override public String getValueAsString() { Object v = getValue(); return v != null ? v.toString() : null; } @Override public int getValueAsInteger() { Object v = getValue(); return (int) (v instanceof Number ? ((Number) v).intValue() : Integer.parseInt(v.toString())); } @Override public long getValueAsLong() { Object v = getValue(); return (long) (v instanceof Number ? ((Number) v).longValue() : Long.parseLong(v.toString())); } @Override public float getValueAsFloat() { Object v = getValue(); return (float) (v instanceof Number ? ((Number) v).floatValue() : Float.parseFloat(v.toString())); } @Override public String getKey() { return key; } @Override public Class<?> getType() { return type; } @Override public String getValueDescription() { return description; } public static String getEnumDescription() { return "Configurations for Social Login related stuffs"; } @Override public void override(Object newValue) { Object parsedValue=null; if (BaasBoxLogger.isDebugEnabled()) BaasBoxLogger.debug("New setting value, key: " + this.key + ", type: "+ this.type + ", new value: " + newValue); if (changeCallback != null) changeCallback.change(getValue(), newValue); if (newValue != null) if (type == Boolean.class) parsedValue = Boolean.parseBoolean(newValue.toString()); else if (type == Integer.class) parsedValue = Integer.parseInt(newValue.toString()); else if (type == Float.class) parsedValue = Float.parseFloat(newValue.toString()); else if (type == String.class) parsedValue = newValue.toString(); else parsedValue = newValue; this.overriddenValue=parsedValue; this.overridden=true; this.editable=false; } @Override public void setEditable(boolean editable) { this.editable = editable; } @Override public void setVisible(boolean visible) { this.visible = visible; } @Override public boolean isVisible() { return visible; } @Override public boolean isOverridden() { return overridden; } @Override public boolean isEditable() { return editable; } }