📄 service.java
字号:
/**
*
*/
package sysu.agenda.ctrl;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Vector;
import sysu.agenda.model.Meeting;
import sysu.agenda.model.User;
import sysu.agenda.command.*;
import sysu.agenda.exception.ParameterException;
/**
* @author Administrator
*
*/
public class Service {
public Vector<User> vecUser = new Vector<User>();
public Vector<Meeting> vecMeeting = new Vector<Meeting>();
public Vector<String> vecName = new Vector<String>();
public HashMap<String, Class<?>> vecCommand = new HashMap<String, Class<?>>();
private String path;
public void clear() {
this.vecUser.clear();
this.vecMeeting.clear();
}
/**
*
*/
public Service() {
// TODO Auto-generated constructor stub
this.setPath(System.getProperty("user.dir"));
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
// try {
// Service.getInstance().loadName();
// } catch (MalformedURLException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// } catch (ClassNotFoundException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// for (String str : Service.getInstance().vecName)
// System.out.println(str);
try {
Service.getInstance().loadCommand();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
for (int i = 0; i < Service.getInstance().vecCommand.size(); i++)
System.out.println(Service.getInstance().vecCommand.get(Service
.getInstance().vecName.get(i)));
}
/**
* static class for Singleton design pattern, instance of Service will be
* created when the first time you make a call to Service.getInstance
*
* @author Cyberpet
* @see Service#getInstance()
*/
static class ServiceSingletonHolder {
static Service instance = new Service();
}
/**
* get the only instance of Service
*
* @return Service
* @see Service
*/
public static Service getInstance() {
return ServiceSingletonHolder.instance;
}
/**
* @param path
* the path to set
*/
public void setPath(String path) {
this.path = path;
}
/**
* @return the path
*/
public String getPath() {
return path;
}
public String getUsers() {
String str = new String();
for (User user : this.vecUser)
str += user.toString();
return str;
}
public String getMeetings() {
String str = new String();
for (Meeting mt : this.vecMeeting)
str += mt.toString() + "\n";
return str;
}
public void loadCommand() throws MalformedURLException,
ClassNotFoundException {
File path = new File(this.path + "\\bin\\sysu\\agenda\\command");
String[] files = path.list(new FilterHelper());
for (String str : files) {
String tmp = InputHelper.getInstance().trimExtension(str);
URL url = path.toURI().toURL();
// initialize url class loader
ClassLoader loader = new URLClassLoader(new URL[] { url });
Class<?> cls = loader.loadClass("sysu.agenda.command." + tmp);
if (ICommand.class.isAssignableFrom(cls)) {
/**
* create instance of the loaded class
*/
// Object obj = cls.newInstance();
this.vecCommand.put(tmp.toLowerCase(), cls);
this.vecName.add(tmp.toLowerCase());
}
}
}
public void loadName() throws MalformedURLException, ClassNotFoundException {
File path = new File(this.path + "\\bin\\sysu\\agenda\\command");
String[] files = path.list(new FilterHelper());
for (String str : files) {
String tmp = InputHelper.getInstance().trimExtension(str);
URL url = path.toURI().toURL();
// initialize url class loader
ClassLoader loader = new URLClassLoader(new URL[] { url });
Class<?> cls = loader.loadClass("sysu.agenda.command." + tmp);
if (ICommand.class.isAssignableFrom(cls))
this.vecName.add(tmp.toLowerCase());
}
}
public Meeting getMeetingByID(String user, String title) {
for (Meeting meet : this.vecMeeting)
if (meet.getUser().compareTo(user) == 0
&& meet.getTitle().compareTo(title) == 0)
return meet;
return null;
}
public boolean isContainedUser(String name) {
for (User user : this.vecUser)
if (user.getName().compareTo(name) == 0)
return true;
return false;
}
public boolean login(String name, String psw) {
for (User user : this.vecUser)
if (user.getName().compareTo(name) == 0
&& user.getPassword().compareTo(psw) == 0)
return true;
return false;
}
public boolean isDateValid(Meeting meeting) {
boolean res = true;
for (Meeting met : this.vecMeeting)
if (met.getUser().compareTo(meeting.getUser()) == 0
|| met.getUser().compareTo(meeting.getOther()) == 0)
res &= met.getStart().after(meeting.getEnd())
|| met.getEnd().before(meeting.getStart());
return res;
}
public boolean addMeeting(Meeting meet) throws ParameterException {
if (this.getMeetingByID(meet.getUser(), meet.getTitle()) == null
&& this.isDateValid(meet))
return this.vecMeeting.add(meet);
else
throw new ParameterException(
"Users or date conflict while adding meeting\n");
}
public Vector<Meeting> getMeetingByDate(String name, Date start, Date end) {
Vector<Meeting> tmp = new Vector<Meeting>();
for (Meeting met : this.vecMeeting)
if ((met.getUser().compareTo(name) == 0 || met.getOther()
.compareTo(name) == 0)
&& !(met.getStart().after(end) || met.getEnd()
.before(start)))
tmp.add(met);
return tmp;
}
public boolean removeMeetingByName(String name) {
boolean res = false;
Vector<Meeting> tmp = getMeetingByUserName(name);
//tmp.addAll(0, MeetingManager.getInstance().getMeetingByOtherName(name));
for (Meeting meet : tmp)
res &= this.vecMeeting.remove(meet);
return res;
}
public Vector<Meeting> getMeetingByUserName(String name) {
Vector<Meeting> tmp = new Vector<Meeting>();
for (Meeting meet : this.vecMeeting)
if (meet.getUser().compareTo(name) == 0)
tmp.add(meet);
return tmp;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -