/*
*
* * Copyright (c) 2016. David Sowerby
* *
* * 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 uk.q3c.krail.core.ui;
import com.vaadin.ui.AbstractField;
import com.vaadin.ui.CheckBox;
import com.vaadin.ui.DateField;
import com.vaadin.ui.TextField;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.util.Date;
/**
* Created by David Sowerby on 28/05/15.
*/
public class DefaultDataTypeToUI implements DataTypeToUI {
@Override
public AbstractField componentFor(Object dataObject) {
return componentFor(dataObject.getClass());
}
@Override
public AbstractField componentFor(Class<?> dataType) {
if (dataType.equals(Date.class)) {
return new DateField();
}
if (dataType.equals(boolean.class) || dataType.equals(Boolean.class)) {
return new CheckBox();
}
return new TextField();
}
@SuppressFBWarnings("URV_INHERITED_METHOD_WITH_RELATED_TYPES") // cannot really change this
@SuppressWarnings("unchecked")
@Override
public <T> T zeroValue(Class<T> dataType) {
if (dataType.equals(Date.class)) {
return (T) new Date();
}
if (dataType.equals(boolean.class) || dataType.equals(Boolean.class)) {
return (T) Boolean.FALSE;
}
if (dataType.equals(Integer.class) || dataType.equals(int.class)) {
return (T) Integer.valueOf(0);
}
return null;
}
}