Package com.nexirius.theteam.persistence

Source Code of com.nexirius.theteam.persistence.DataBaseTeamPersistence

package com.nexirius.theteam.persistence;

import com.nexirius.framework.datamodel.ArrayModel;
import com.nexirius.framework.datamodel.DataModel;
import com.nexirius.framework.datamodel.DataModelVector;
import com.nexirius.framework.datamodel.DataModelEnumeration;
import com.nexirius.framework.jdbc.DatabaseTableMapping;
import com.nexirius.framework.jdbc.JdbcConnectionHandler;
import com.nexirius.framework.application.ErrorMessageException;
import com.nexirius.theteam.datamodel.MemberModel;
import com.nexirius.theteam.datamodel.PersonModel;
import com.nexirius.theteam.datamodel.PhoneModel;
import com.nexirius.theteam.datamodel.AddressModel;
import com.nexirius.util.XString;
import com.nexirius.util.XFile;

import java.sql.SQLException;
import java.io.IOException;
import java.io.BufferedInputStream;
import java.io.InputStream;
import java.io.File;

public class DataBaseTeamPersistence implements ITeamPersistence {
    public DataBaseTeamPersistence() {
        init();
    }

    public static void init() {
        String dbFileName = "theteam.mdb";
        String dbDirName = System.getProperty("user.dir") + File.separator + "data" + File.separator;
        String dbPathName = dbDirName + dbFileName;
        XFile dbFile = new XFile(dbPathName);

        if (!dbFile.exists()) {
            InputStream stream = new BufferedInputStream(dbFile.getClass().getClassLoader().getResourceAsStream(dbFileName));

            try {
                new XFile(dbDirName).mkdirs();
                dbFile.createFrom(stream);
            } catch (IOException e) {
                throw new ErrorMessageException("Cannot initialize database", e, null);
            }
        }

        try {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
        } catch (InstantiationException e) {
            e.printStackTrace()//TODO
        } catch (IllegalAccessException e) {
            e.printStackTrace()//TODO
        } catch (ClassNotFoundException e) {
            e.printStackTrace()//TODO
        }

        XString filename = new XString(dbPathName);

        filename.replace("\\", "/");

        String database = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=" + filename + ";DriverID=22;READONLY=true}";

        JdbcConnectionHandler.init(new JdbcConnectionHandler(database, null, null));

        DatabaseTableMapping memberMapping = new DatabaseTableMapping("MEMBER", "PK", new String[] {"personId", "type"}, new String[] {"PERSON_ID", "TYPE"});
        JdbcConnectionHandler.instance().registerDatabaseTableMapping(MemberModel.class.getName(), memberMapping);

        DatabaseTableMapping personMapping = new DatabaseTableMapping("PERSON", "PK", new String[] {"name", "firstname", "birthdate"}, new String[] {"NAME_", "FIRSTNAME", "BIRTHDATE"});
        JdbcConnectionHandler.instance().registerDatabaseTableMapping(PersonModel.class.getName(), personMapping);

        DatabaseTableMapping addressMapping = new DatabaseTableMapping("ADDRESS", "PK", new String[] {"street", "zip", "city", "state", AddressModel.FIELD_MAIN_ADDRESS}, new String[] {"STREET", "ZIP", "CITY", "STATE", "MAIN"});
        addressMapping.setForeignKeyField("FK_MEMBER");
        JdbcConnectionHandler.instance().registerDatabaseTableMapping(AddressModel.class.getName(), addressMapping);

        DatabaseTableMapping phoneMapping = new DatabaseTableMapping("PHONE", "PK", new String[] {"description", "number"}, new String[] {"DESCRIPTION", "NUMBER_"});
        phoneMapping.setForeignKeyField("FK_MEMBER");
        JdbcConnectionHandler.instance().registerDatabaseTableMapping(PhoneModel.class.getName(), phoneMapping);
    }

    public void getAllMembers(ArrayModel members) {
        DatabaseTableMapping mapping = JdbcConnectionHandler.instance().getDatabaseTableMapping(MemberModel.class.getName());
        DatabaseTableMapping personMapping = JdbcConnectionHandler.instance().getDatabaseTableMapping(PersonModel.class.getName());
        DatabaseTableMapping addressMapping = JdbcConnectionHandler.instance().getDatabaseTableMapping(AddressModel.class.getName());
        DatabaseTableMapping phoneMapping = JdbcConnectionHandler.instance().getDatabaseTableMapping(PhoneModel.class.getName());

        try {
            mapping.search(null, new MemberModel(), members);

            DataModelEnumeration en = members.getEnumeration();

            while (en.hasMore()) {
                MemberModel member = (MemberModel) en.next();
                PersonModel person = member.getPerson();

                person.setInstanceName(member.getPersonId());
                personMapping.read(person);

                addressMapping.readChildren(member.getAddresses());
                phoneMapping.readChildren(member.getPhones());
            }

        } catch (Exception e) {
            e.printStackTrace()//TODO
        }
    }

    public void update(DataModel model) {
        DatabaseTableMapping mapping = JdbcConnectionHandler.instance().getDatabaseTableMapping(model.getClass().getName());

        try {
            mapping.updateIfDirty(model);
        } catch (Exception e) {
            e.printStackTrace()//TODO
        }
    }

    public void updateChildren(DataModel parent, ArrayModel children) {
        if (children.getSize() > 0) {
            DatabaseTableMapping mapping = JdbcConnectionHandler.instance().getDatabaseTableMapping(children.getDataModel(0).getClass().getName());

            try {
                mapping.updateChildrenIfDirty(children);
            } catch (Exception e) {
                e.printStackTrace()//TODO
            }
        }
    }

    public void create(DataModel model) {
        DatabaseTableMapping mapping = JdbcConnectionHandler.instance().getDatabaseTableMapping(model.getClass().getName());

        try {
            mapping.create(model);
        } catch (Exception e) {
            e.printStackTrace()//TODO
        }
    }

    public void createChildren(DataModel parent, ArrayModel children) {
        if (children.getSize() > 0) {
            DataModel model = children.getDataModel(0);
            DatabaseTableMapping mapping = JdbcConnectionHandler.instance().getDatabaseTableMapping(model.getClass().getName());
            try {
                mapping.createChildren(children);
            } catch (Exception e) {
                e.printStackTrace()//TODO
            }
        }
    }

    public void delete(DataModelVector v) {

        DataModelEnumeration en = v.getEnumeration();

        while (en.hasMore()) {
            DataModel model = en.next();
            DatabaseTableMapping mapping = JdbcConnectionHandler.instance().getDatabaseTableMapping(model.getClass().getName());
            try {
                mapping.delete(model);
            } catch (Exception e) {
                e.printStackTrace()//TODO
            }
        }
    }

    public void deleteMember(MemberModel member) {
        deleteModel(member.getPerson());
        delete(member.getAddresses().getChildren());
        delete(member.getPhones().getChildren());
        deleteModel(member);
    }

    private void deleteModel(DataModel model) {
        DatabaseTableMapping mapping = JdbcConnectionHandler.instance().getDatabaseTableMapping(model.getClass().getName());
        try {
            mapping.delete(model);
        } catch (Exception e) {
            e.printStackTrace()//TODO
        }
    }
}
TOP

Related Classes of com.nexirius.theteam.persistence.DataBaseTeamPersistence

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.