⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 modelmanagerimpl.java

📁 一个可以存储和打印成绩单的系统
💻 JAVA
字号:
package org.minjey.cjsjk.core;import java.lang.reflect.Field;import java.sql.Connection;import java.sql.Date;import java.util.Calendar;import java.util.HashMap;import java.util.Iterator;import java.util.Properties;import org.minjey.cjsjk.dao.Dao;import org.minjey.cjsjk.model.Course;import org.minjey.cjsjk.model.EnrollTime;import org.minjey.cjsjk.model.Major;import org.minjey.cjsjk.model.Student;import org.minjey.cjsjk.model.StudentCourse;import org.minjey.cjsjk.util.Cloner;import org.minjey.cjsjk.util.PropertyDict;import org.minjey.cjsjk.util.PropertyLoader;import org.minjey.cjsjk.util.Reflector;import org.minjey.cjsjk.view.tree.ModelListener;public class ModelManagerImpl implements ModelManager {	private ModelListener listener;	private Properties properties;	private Reflector reflector;	private Dao dao;		private HashMap<Class, HashMap<Integer, Object>> temp;		public void clearCache() {		SysDict.clearCache();	}		public ModelManagerImpl(ModelListener listener) {		properties = PropertyLoader.loadSystemProperty();		reflector = new Reflector();		dao = Dao.getDao();				temp = new HashMap<Class, HashMap<Integer, Object>>();				this.listener = listener;//new ModelListenerImpl();<--把TreePanel加进去	}		public void delete(Object obj) {		dao.delete(obj);	//存入数据库		afterDelete(obj);		listener.objectDeleted(obj);	}	public void save(Object obj) {		Integer id = (Integer)reflector.getValue(obj, "id");				if(id == null) {			if(obj.getClass().equals(Major.class)) {				Major major = (Major)obj;				Date intime = major.getIntime();				EnrollTime et = getEnrollTime(intime);				major.setEnrolltime(et);							}			dao.save(obj);	//存入数据库			afterSave(obj);			listener.objectAdded(obj);		} else {			update(obj);		}			}		public void beforeEdit(Object obj) {	//通知Model即将更新,将对象脱离Model				Integer id = (Integer)reflector.getValue(obj, "id");		if(id == null) {			return;		}		Class type = obj.getClass();		Object cobj = Cloner.clone(obj);				if(temp.containsKey(type)) {			HashMap<Integer, Object> map = temp.get(type);			putIntoTemp(map, cobj);		} else {			HashMap<Integer, Object> map = new HashMap<Integer, Object>();						temp.put(type, map);			putIntoTemp(map, cobj);		}	}		private Object getObject(Object obj) {		Class type = obj.getClass();		Reflector reflector = new Reflector();		Integer id = (Integer)reflector.getValue(obj, "id");		HashMap<Integer, Object> map = temp.get(type);		return map.get(id);	}		private void update(Object obj) {		if(obj instanceof StudentCourse) {					} else {			Object oldobj = getObject(obj);			afterDelete(oldobj);		}		dao.update(obj);	//存入数据库		afterSave(obj);		listener.objectAdded(obj);	}		private void putIntoTemp(HashMap<Integer, Object> map, Object obj) {		Reflector reflector = new Reflector();		Integer id = (Integer)reflector.getValue(obj, "id");		map.put(id, obj);	}		private void afterDelete(Object obj) {		Integer id = (Integer)reflector.getValue(obj, "id");				Class cla = obj.getClass();		if(cla.equals(StudentCourse.class)) {						} else{			if(cla.equals(Major.class)) {				Major major = (Major)obj;				major.getStation().getMajors().remove(id);			} else if(cla.equals(Course.class)) {				Course course = (Course)obj;							course.getMajor().getCourses().remove(id);			} else if(cla.equals(Student.class)) {				Student student = (Student)obj;							student.getMajor().getStudents().remove(id);			} else {				String objName = cla.getSimpleName().toUpperCase();				Class dictClass = SysDict.class;				Field[] fields = dictClass.getDeclaredFields();				for(int i = 0; i < fields.length; i++) {					if(objName.equals(fields[i].getName())) {						HashMap<Integer, Object> map = (HashMap<Integer, Object>)reflector.doStaticGetValue(SysDict.class, objName);												map.remove(id);					}				}			}			listener.objectDeleted(obj);		}	}		private void afterSave(Object obj) {	//完成更新以后维持对象模型		Integer id = (Integer)reflector.getValue(obj, "id");				Class cla = obj.getClass();		if(cla.equals(Major.class)) {			Major major = (Major)obj;			major.getStation().getMajors().put(id, major);	//加入新函授站		} else if(cla.equals(Course.class)) {			Course course = (Course)obj;						course.getMajor().getCourses().put(id, course);		} else if(cla.equals(Student.class)) {			Student student = (Student)obj;						student.getMajor().getStudents().put(id, student);		} else if(cla.equals(StudentCourse.class)) {			StudentCourse sc = (StudentCourse)obj;			sc.getStudent().getStudentcourses().put(sc.getId(), sc);			//System.out.println("Saved");		} else {			String objName = cla.getSimpleName().toUpperCase();			Class dictClass = SysDict.class;			Field[] fields = dictClass.getDeclaredFields();			for(int i = 0; i < fields.length; i++) {				if(objName.equals(fields[i].getName())) {					HashMap<Integer, Object> map = (HashMap<Integer, Object>)reflector.doStaticGetValue(SysDict.class, objName);										map.put(id, obj);				}			}		}	}	private EnrollTime getEnrollTime(Date intime) {		EnrollTime et = null;				Calendar calendar =  Calendar.getInstance();		calendar.setTime(intime);		int year = calendar.get(Calendar.YEAR);		int month = calendar.get(Calendar.MONTH);		boolean showMonth = Boolean.valueOf(properties.getProperty(PropertyDict.MONTH4ENROLLTIME));		boolean find = false;		HashMap<Integer, Object> ets = SysDict.getENROLLTIME();		Iterator<Object> it = ets.values().iterator();				while(it.hasNext()) {			et = (EnrollTime)it.next();			calendar.setTime(et.getEtime());			int ey = calendar.get(Calendar.YEAR);			int em = calendar.get(Calendar.MONTH);			if(ey == year) {				if(showMonth) {					if(em == month) {						find = true;						break;					}				} else {					find = true;					break;				}			} else {				continue;			}		}		if(!find) {			et = new EnrollTime();			et.setEtime(intime);			dao.save(et);			Integer id = (Integer)reflector.getValue(et, "id");			SysDict.getENROLLTIME().put(id, et);		}		return et;	}	public Connection getConnection() {		return dao.getConnection();	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -