/*
* Copyright 2015 Shashank Tulsyan.
*
* 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 neembuu.rus;
import neembuu.rus.type.TypeHandlerProvider;
/**
*
* @author Shashank
*/
public class VImpl implements V{
private final String v;
VImpl(String v) {this.v = v;}
@Override public int i(int defaultValue)
{ if(v==null)return defaultValue; return Integer.parseInt(v); }
@Override public long l(long defaultValue)
{ if(v==null)return defaultValue; return Long.parseLong(v); }
@Override public double d(double defaultValue)
{ if(v==null)return defaultValue; return Double.parseDouble(v);}
@Override public String s(String defaultValue)
{ if(v==null)return defaultValue; return v; }
@Override public float f(float defaultValue)
{if(v==null)return defaultValue; return Float.parseFloat(v); }
@Override public boolean b(boolean defaultValue)
{if(v==null)return defaultValue; return Boolean.parseBoolean(v); }
@Override public boolean isNull() { return v == null; }
@Override public Object o(DefaultValue dv,Rus r,String name,TypeHandlerProvider thp) {
if(dv==null)return s(null);
if(dv.subElementType().isAssignableFrom(int.class)){
return i(dv.i());
}else if(dv.subElementType().isAssignableFrom(double.class)){
return d(dv.d());
}else if(dv.subElementType().isAssignableFrom(float.class)){
return f(dv.f());
}else if(dv.subElementType().isAssignableFrom(boolean.class)){
return b(dv.b());
}else if(dv.subElementType().isAssignableFrom(long.class)){
return l(dv.l());
}else if(dv.subElementType().isAssignableFrom(String.class)){
return s(dv.s());
}
return thp.provideFor(dv.subElementType(),dv).handle(v, r,name, dv);
}
@Override public byte[] raw() {
return v.getBytes();
}
@Override
public <X> X o(Class<X> cast, X defaultValue) {
if(String.class.isAssignableFrom(cast)){
return v==null?defaultValue:(X)v;
}else {
}return defaultValue;
}
}