org.efaps.admin.datamodel.attributetype.BooleanType Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of efaps-kernel Show documentation
Show all versions of efaps-kernel Show documentation
eFaps is a framework used to map objects with or without attached files to
a relational database and optional file systems (only for attaches files). Configurable access control can be provided down to object and attribute level depending on implementation and use case. Depending on requirements, events (like triggers) allow to implement business logic and to separate business logic from user interface.
The framework includes integrations (e.g. webdav, full text search) and a web application as 'simple' configurable user interface. Some best practises, example web application modules (e.g. team work module) support administrators and implementers using this framework.
/*
* Copyright 2003 - 2012 The eFaps Team
*
* 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.
*
* Revision: $Rev: 7483 $
* Last Changed: $Date: 2012-05-11 11:57:38 -0500 (Fri, 11 May 2012) $
* Last Changed By: $Author: [email protected] $
*/
package org.efaps.admin.datamodel.attributetype;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.efaps.admin.datamodel.Attribute;
import org.efaps.db.query.CachedResult;
import org.efaps.db.wrapper.AbstractSQLInsertUpdate;
/**
* Implements the mapping between values in the database and {@link Boolean}
* values in eFaps. Internally in the database the boolean value could be
* implemented native as boolean or as a number value. If the database uses
* number values all values which are not null
and not zero are
* interpreted from eFaps as true.
*
* @author The eFaps Team
* @version $Id: BooleanType.java 7483 2012-05-11 16:57:38Z [email protected] $
*/
public class BooleanType
extends AbstractType
{
/**
* Converts given _value
into a {@link Boolean} value and set
* for the {@link Attribute#getSqlColNames() SQL columns} in
* _attribute
this value in _insertUpdate
SQL
* statement.
*
* @param _insertUpdate SQL insert / update statement
* @param _attribute SQL update statement
* @param _value new object value to set; values are localized and
* are coming from the user interface
* @throws SQLException if size of the SQL columns of
* _attribute
is not correct
*/
@Override
public void prepare(final AbstractSQLInsertUpdate _insertUpdate,
final Attribute _attribute,
final Object... _value)
throws SQLException
{
checkSQLColumnSize(_attribute, 1);
_insertUpdate.column(_attribute.getSqlColNames().get(0), eval(_value));
}
/**
* Evaluates given _value
and converts them to a
* {@link Boolean} value.
*
* @param _value value to evaluate
* @return related evaluated boolean value
*/
protected boolean eval(final Object... _value)
{
final Boolean ret;
if (_value == null) {
ret = null;
} else if (_value[0] instanceof String) {
ret = Boolean.valueOf((String) _value[0]);
} else if (_value[0] instanceof Boolean) {
ret = (Boolean) _value[0];
} else {
ret = false;
}
return ret;
}
/**
* {@inheritDoc}
*/
@Override
public Object readValue(final Attribute _attribute,
final CachedResult _rs,
final List _indexes)
throws SQLException
{
return _rs.getBoolean(_indexes.get(0).intValue());
}
/**
* Evaluates the _objectList
and interprets this value as
* boolean.
*
* @param _attribute related eFaps attribute definition; not used
* @param _objectList list of values for the attribute definition
* @return related interpreted boolean value if object list is
* {@link Boolean} or {@link Number}; otherwise null
* is returned
*/
public Object readValue(final Attribute _attribute,
final List