/*******************************************************************************
* Copyright (c) 2013 hangum.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Lesser Public License v2.1
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
*
* Contributors:
* hangum - initial API and implementation
******************************************************************************/
package com.hangum.tadpole.engine.query.dao.rdb;
import java.lang.reflect.Method;
import org.apache.log4j.Logger;
import com.hangum.tadpole.engine.query.dao.mysql.StructObjectDAO;
/**
*
*
* @author nilriri
*
*/
public abstract class AbstractDAO extends StructObjectDAO {
private static final Logger logger = Logger.getLogger(AbstractDAO.class);
/**
* 컬럼명을 인수로 넘겨서 값을 조회한다.
* @param columnName
* @return
*/
public String getvalue(String columnName) {
Class<? extends Object> clazz = this.getClass();
Method[] methods = clazz.getMethods();
for (Method method : methods) {
if (method.isAnnotationPresent(FieldNameAnnotationClass.class)) {
FieldNameAnnotationClass fieldAnnotation = method.getAnnotation(FieldNameAnnotationClass.class);
try {
if (columnName.toLowerCase().equals(fieldAnnotation.fieldKey().toLowerCase())) {
Object result = method.invoke(this, null);
if (result!=null){
return String.valueOf(result);
}
}
} catch (Exception e) {
logger.error(" method invoke error: " + columnName);
}
}
}
return "";
}
/**
* 대소문자 구분없이 컬럼 값을 비교한다.
* @param target
* @param columnName
* @return
*/
public int compareToIgnoreCase(AbstractDAO target, String columnName) {
String value1 = "";
String value2 = "";
if (columnName != null && !"".equals(columnName)) {
value1 = (String) this.getvalue(columnName);
value2 = (String) target.getvalue(columnName);
}
return value1.compareToIgnoreCase(value2);
}
}