วันพุธที่ 26 สิงหาคม พ.ศ. 2552

java batch list model

ตัว java class model ตัวนี้ เขียนขึ้น เนื่องจากเกิดปัญหา การเก็บข้อมูลเป็น list โดยแต่ละ
list มีหัวข้อคนละชุด งงหละสิ
ถ้ามองก็คล้าย database ครับ(จริง ๆ ก็ทำเพื่อสิ่งนั้น)
คือ ผมมีข้อมูล
A ประกอบไปด้วย A1, A2, A3, - A10
B ประกอบไปด้วย Ba, Bb, Bc, Bd, - Bz
C ประกอบไปด้วย Ca2, Ca4, Ca8, Cb2, Cb4, Cb8
คร่าว ๆ ประมาณนี้

แล้วถ้าผมอยู่ ๆ ต้องการเพิ่ม
D ประกอบไปด้วย ก, ข, ค, ง, - ฮ

แล้วต้องการลบ A กับ B ออกจากระบบ

แล้วต้องการดูว่า ตอนนี้เหลืออะไรอยู่บ้าง เหลืออยู่เท่าไร

แล้วสมมติว่าอนาตค
อาจต้องการ เพิ่มหรือลด บางตัวแปร
อาจต้องการ เพิ่มหรือลด ข้อมูลในบางแปร

จากข้างบนนี้ ปัญหาคือ แล้วผมจะเอาอะไรไปเก็บข้อมูลที่ระบุอะไรไม่ได้ นี้
ไม่รู้อะไรจะมาอะไรจะไป จะทำอย่างไงให้ยืดหยุ่น
กรณี list ข้อมูลไม่ใช่แค่ text

รายละเอียด
...(เดี๋ยวว่างมาเขียนต่อนะ ดู ๆ code กันไปก่อน)

ตัวนี้ คุณ Notto เป็นคนช่วยแปลงให้เข้ากับ java v.1.4 ครับ เนื่องจาก ตอนแรกผมจะใส่
type Generic เป็น Object กับ String

import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class BatchListModel {

    private Set idSet;
    private Map batchDataMap;

    public BatchListModel() {
        idSet = new HashSet();
        batchDataMap = new HashMap();
    }

    public void putAllStringData(String id, List list) {
        for (Iterator iterator = list.iterator(); iterator.hasNext();) {
            String item = (String) iterator.next();
            putStringData(id, item);
        }
    }

    public void putAllObjectData(String id, List list) {
        for (Iterator iterator = list.iterator(); iterator.hasNext();) {
            Object item = (Object) iterator.next();
            putObjectData(id, item);
        }
    }

    public void putStringData(String id, String obj) {
        idSet.add(id);
        List objList = (List) batchDataMap.get(id);
        if (null == objList) {
            objList = new LinkedList();
        }
        objList.add(obj);
        batchDataMap.put(id, objList);
    }

    public void putObjectData(String id, Object obj) {
        idSet.add(id);
        List objList = (List) batchDataMap.get(id);
        if (null == objList) {
            objList = new LinkedList();
        }
        objList.add(obj);
        batchDataMap.put(id, objList);
    }

    public List getData(String id) {
        List objList = (List) batchDataMap.get(id);
        return objList;
    }

    public int getSize(String id) {
        int size = 0;
        try {
            List objList = (List) batchDataMap.get(id);
            if (null != objList) {
                size = objList.size();
            }
        } catch (RuntimeException e) {
            e.printStackTrace();
        }
        return size;
    }

    public Set getId() {
        return idSet;
    }

    public Set getId(String id) {
        Set newStrSet = new HashSet();
        for (Iterator iterator = getId().iterator(); iterator.hasNext();) {
            String str = (String) iterator.next();
            if (str.equalsIgnoreCase(id)) {
                newStrSet.add(str);
            }
        }
        return newStrSet;
    }

    public int getIdSize(String id) {
        int size = 0;
        try {
            Set objList = getId(id);
            if (null != objList) {
                size = objList.size();
            }
        } catch (RuntimeException e) {
            e.printStackTrace();
        }
        return size;
    }

    public void removeDataById(String id) {
        batchDataMap.remove(id);
    }

    public void clear() {
        this.clearId();
        this.clearData();
    }

    public void clearId() {
        idSet.clear();
    }

    public void clearData() {
        batchDataMap.clear();
    }
}

ไม่มีความคิดเห็น: