All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.javaz.jdbc.base.GenericMapConvertibleDAO Maven / Gradle / Ivy

There is a newer version: 1.9.4
Show newest version
package org.javaz.jdbc.base;

import org.javaz.jdbc.util.JdbcCachedHelper;
import org.javaz.jdbc.util.StringMapPair;

import java.sql.SQLException;
import java.util.*;

/**
 * Basic DB work, based on MapConvertibleI & AbstractMapConvertibleHelper
 */
public class GenericMapConvertibleDAO {
    private String databaseAddress;

    public GenericMapConvertibleDAO(String databaseAddress) {
        this.databaseAddress = databaseAddress;
    }

    public String getDatabaseAddress() {
        return databaseAddress;
    }

    public void setDatabaseAddress(String databaseAddress) {
        this.databaseAddress = databaseAddress;
    }

    private  void internalSave(T obj, AbstractMapConvertibleHelper builder, boolean forceInsert) throws SQLException {
        boolean idIsMissing = obj.getPrimaryKey() == null;
        StringMapPair update = builder.getDbUpdateQuery(obj, forceInsert);
        Number newId = JdbcCachedHelper.getInstance(databaseAddress).runUpdate(update);
        if (idIsMissing) {
            obj.setGeneratedPrimaryKey(newId.longValue());
        }
    }

    public  void add(T obj, AbstractMapConvertibleHelper builder) throws SQLException {
        internalSave(obj, builder, !(obj.getPrimaryKey() == null));
    }

    public  void saveOrUpdate(T obj, AbstractMapConvertibleHelper builder) throws SQLException {
        internalSave(obj, builder, false);
    }

    public  List all(AbstractMapConvertibleHelper builder) {
        return findByConditions(null, null, builder);
    }

    public  T findById(Comparable id, AbstractMapConvertibleHelper builder) {
        HashMap params = new HashMap();
        params.put(params.size() + 1, id);
        List objects = findByConditions("where " + builder.getIdName() + " = ?", params, builder);
        if (objects != null && !objects.isEmpty()) {
            return objects.iterator().next();
        }
        return null;
    }

    public  List findByConditions(String where, Map objects, AbstractMapConvertibleHelper builder) {
        return findByFullQuery("select * from " + builder.getTableName() + " " + (where != null ? where : ""), objects, builder);
    }

    public  List findByFullQuery(String query, Map objects, AbstractMapConvertibleHelper builder) {
        List mapList = JdbcCachedHelper.getInstance(databaseAddress).getRecordList(query, objects);
        ArrayList list = new ArrayList();
        for (Object aMapList : mapList) {
            Map map = (Map) aMapList;
            list.add(builder.buildFromMap(map));
        }
        return list;
    }

    public  void delete(T object, AbstractMapConvertibleHelper builder) {
        StringMapPair delete = builder.getDbDeleteQuery(object);
        JdbcCachedHelper.getInstance(databaseAddress).runUpdateDataIgnore(delete);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy