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

📄 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) {		try{			if(obj.getClass().equals(Major.class)) {				Major major = (Major)obj;				Date intime = major.getIntime();				EnrollTime et = getEnrollTime(intime);				major.setEnrolltime(et);			}			Integer id = (Integer)reflector.getValue(obj, "id");			if(id == null) {				dao.save(obj);	// 存入数据库				afterSave(obj);				listener.objectAdded(obj);			} else {				update(obj);			}		} catch(Exception e) {			e.printStackTrace();		}	}		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) throws Exception {		EnrollTime et = null;		if(intime != 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;		} else {			throw new Exception("清输入入学时间");		}	}	public Connection getConnection() {		return dao.getConnection();	}}

⌨️ 快捷键说明

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