Package com.nexirius.theteam.persistence

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

package com.nexirius.theteam.persistence;

import com.nexirius.framework.datamodel.ArrayModel;
import com.nexirius.framework.datamodel.DataModel;
import com.nexirius.framework.datamodel.DataModelEnumeration;
import com.nexirius.framework.datamodel.DataModelVector;
import com.nexirius.theteam.datamodel.*;
import com.nexirius.util.SortedVector;

import java.io.File;

public class FileBasedTeamPersistence implements ITeamPersistence {

    public FileBasedTeamPersistence() {
        FilePersistence.init(System.getProperty("user.dir") + File.separator + "data" );
    }

    public void getAllMembers(ArrayModel members) {
        members.clear();
        SortedVector all = FilePersistence.getInstance().getAll(MemberModel.class);

        for (MemberModel m = (MemberModel) all.firstObject(); m != null; m = (MemberModel) all.nextObject()) {
            members.append(m);

            m.getPerson().setInstanceName(m.getPersonId());

            FilePersistence.getInstance().read(m.getPerson());

            getAddressesForMember(m);
            getPhonesForMember(m);
        }
    }

    public void getAddressesForMember(MemberModel member) {
        member.getAddresses().clear();
        SortedVector all = FilePersistence.getInstance().getAll(AddressModel.class, ITeamPersistence.FOREIGN_KEY, member.getInstanceName());

        for (AddressModel am = (AddressModel) all.firstObject(); am != null; am = (AddressModel) all.nextObject()) {
            member.getAddresses().append(am);
        }
    }

    public void getPhonesForMember(MemberModel member) {
        member.getPhones().clear();
        SortedVector all = FilePersistence.getInstance().getAll(PhoneModel.class, ITeamPersistence.FOREIGN_KEY, member.getInstanceName());

        for (PhoneModel pm = (PhoneModel) all.firstObject(); pm != null; pm = (PhoneModel) all.nextObject()) {
            member.getPhones().append(pm);
        }
    }

    public void update(DataModel model) {
        if (model instanceof ArrayModel) {
            DataModelEnumeration en = model.getEnumeration();

            while (en.hasMore()) {
                DataModel child = en.next();

                if (child.getInstanceName() == null) {
                    create(child);
                } else {
                    update(child);
                }
            }
        } else {
            if (model instanceof MemberModel) {
                MemberModel member = (MemberModel) model;
                member.setRelatedInstancesTransient(true);
            }
            FilePersistence.getInstance().update(model);
            if (model instanceof MemberModel) {
                MemberModel member = (MemberModel) model;
                member.setRelatedInstancesTransient(false);
            }
        }
    }

    public void updateChildren(DataModel parent, ArrayModel children) {
        DataModelEnumeration en = children.getEnumeration();

        while (en.hasMore()) {
            DataModel child = en.next();

            if (child.getInstanceName() == null) {
                child.setChildText(ITeamPersistence.FOREIGN_KEY, parent.getInstanceName());
                create(child);
            } else {
                update(child);
            }
        }

        delete(children.getDeleted());
    }

    public void create(DataModel model) {
        FilePersistence.getInstance().create(model);
    }

    public void createChildren(DataModel parent, ArrayModel children) {
        if (parent.getInstanceName() == null) {
            create(parent);
        }

        DataModelEnumeration en = children.getEnumeration();

        while (en.hasMore()) {
            DataModel model = en.next();
            model.setChildText(ITeamPersistence.FOREIGN_KEY, parent.getInstanceName());
            create(model);
        }
    }

    public void delete(DataModel model) {
        FilePersistence.getInstance().delete(model);
    }

    public void delete(DataModelVector v) {
        if (v == null) {
            return;
        }

        DataModelEnumeration en = v.getEnumeration();

        while (en.hasMore()) {
            FilePersistence.getInstance().delete(en.next());
        }
    }

    public void deleteMember(MemberModel member) {
        AddressArrayModel addresses = member.getAddresses();
        DataModelEnumeration en = addresses.getEnumeration();

        while (en.hasMore()) {
            DataModel model = en.next();
            FilePersistence.getInstance().delete(model);
        }

        PhoneArrayModel phones = member.getPhones();
        DataModelEnumeration en1 = phones.getEnumeration();
        while (en1.hasMore()) {
            DataModel model = en1.next();
            FilePersistence.getInstance().delete(model);
        }

        FilePersistence.getInstance().delete(member.getPerson());
        FilePersistence.getInstance().delete(member);
    }
}
TOP

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

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.