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

📄 auto.java

📁 使用Java Swing开发的一个自动生成POJO的软件,能够生成Appfuse框架需要的带有XDoclet代码的POJO.
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
		jbDel.setBorder(unSelected);
		jbAdd.setBorder(unSelected);
		jbExit.setBorder(unSelected);
		jbRun.setBorder(unSelected);
		jbEdit.setBorder(unSelected);
	}

	/**
	 * 按钮被选择之后的事件
	 */
	public void actionPerformed(ActionEvent e) {
		Object obj = e.getSource();

		// 点击属性设置的时候
		if (obj == setupButton || obj == jbAdd) {
			setButton(jbAdd);
			reloadTime(this);

			actionPanel.setText("设置属性的名称,长度,外键,类型等");

			// 初始化外键列表
			SetupDialog.forList.removeAll();
			SetupDialog.forList.add("没有外键");
			SetupDialog.forList.select(0);
			SetupDialog.editFlag = 0;

			File modelDir = new File(Constants.modelDir);
			if (modelDir.exists() == true
					|| path.equals(Constants.modelDir) == false) {
				// 将model下所有符合条件的model名加入外键列表
				setList(SetupDialog.forList);
			}
			SetupDialog.setup();
			setupDialog.setVisible(true);
		}

		// 关于对话框
		else if (obj == aboutButton) {
			setButton();
			reloadTime(this);

			actionPanel.setText("关于本软件");
			aboutDialog.setVisible(true);
		}

		// tomcat设置
		else if (obj == tomcatButton) {
			setButton();
			reloadTime(this);

			actionPanel.setText("需要先设置好tomact的系统变量");
			String tomcat = "startup.bat";
			Runtime rt = Runtime.getRuntime();
			try {
				rt.exec(new String[] { "cmd.exe", "/c", tomcat });
			} catch (IOException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
		}

		// 路径设置
		else if (obj == pathButton) {
			setButton();
			reloadTime(this);

			actionPanel.setText("选择生成文件的输出工程");
			int returnVal = jfchooser.showOpenDialog(this);

			if (returnVal == JFileChooser.APPROVE_OPTION) {// 当选择确定的时候
				if (jfchooser.getSelectedFile() != null) {// 当选择的目录不为空
					path = jfchooser.getSelectedFile().toString();// 转换path为当前选择目录
					pathProject = jfchooser.getSelectedFile().toString();// 转换pathProject为当前选择目录
					modelFlag = 0;// 清modelFlag以便计算当前文件夹下是否含有model目录
					modelDireList.clear();

					if (path.substring(1, path.length()).equals(":\\") == true)// 判断不让选择的路径为磁盘分区
						actionPanel.setText("选择路径不能为磁盘分区,请选择具体文件夹!");
					else {
						if (path.equals(Constants.modelDir) == false) {// 如果选择的目录为C:\\Model,不计算是否含有model

							ArrayList model = new ArrayList(modelFind(path));// 使用modelFind方法将可用文件夹列表传递给modellist
							if (model.size() == 0) {// 如果选择的目录下没有符合条件的model目录,提示系统默认目录为"C:\\Model"
								path = Constants.modelDir;
								actionPanel
										.setText("路径选择错误!该路径下不存在符合条件的Model目录!"
												+ nl + "如果输出将使用软件默认目录:" + nl
												+ path);
							} else if (model.size() > 1) {// 如果选择的目录下存在多个符合条件的model目录
								String text = "存在多个符合条件的model目录,请重新具体选择!" + nl
										+ "目录分别为:" + nl;
								for (int i = 0; i < model.size(); i++) {
									if (model.get(i).toString().length() > 35)// 如果路径太长,分行显示
										text = text
												+ model.get(i).toString()
														.substring(0, 35)
												+ nl
												+ model
														.get(i)
														.toString()
														.substring(
																35,
																model
																		.get(i)
																		.toString()
																		.length())
												+ nl;
									else
										text = text + model.get(i) + nl;
								}
								path = Constants.modelDir;
								text += "如果输出将使用软件默认目录:" + nl + path;
								actionPanel.setText(text);
							} else {// 选择的目录下存在一个符合条件的model目录
								path = model.get(0).toString();
								if (path.length() > 35)// 如果路径太长,状态栏分行显示
									actionPanel
											.setText("文件输出目录为:"
													+ nl
													+ path.substring(0, 35)
													+ nl
													+ path.substring(35, path
															.length()));
								else
									actionPanel.setText("文件输出目录为:" + nl + path);

								listParent.removeAll();// 清空listParent
								// 将model所有符合条件的model名加入listParent
								setList(listParent);

							}
						} else
							// 选定的输出目录为"C:\\Model"的时候
							actionPanel.setText("文件输出目录为:" + nl + path);
					}
				}
			}
		}

		// 确定按钮
		else if (obj == jbSure) {
			setButton(jbSure);
			reloadTime(this);

			int flagCode = 0;
			// 验证code是否为英文字母和数字,如果不是,将flagCode设为1
			for (int i = 0; i < jtCode.getText().length(); i++) {
				if ((65 <= jtCode.getText().charAt(i) && jtCode.getText()
						.charAt(i) <= 90)
						|| (97 <= jtCode.getText().charAt(i) && jtCode
								.getText().charAt(i) <= 122)
						|| (48 <= jtCode.getText().charAt(i) && jtCode
								.getText().charAt(i) <= 57))
					continue;
				else
					flagCode = 1;
			}

			// 代码输入框不为空
			if (jtCode.getText().equals("") == false) {
				if (flagCode == 1)
					actionPanel.setText("代码名字必须为数字和字母!");
				else {

					// 保证文件名首字母大写
					Writer wr = new Writer();
					String upperName = wr.getFileName(jtCode.getText());

					fileName = upperName + ".java";// 得到文件名

					// 如果parent可用,设置传递给writer的参数
					if (listParent.getSelectedIndex() >= 0
							&& checkParent.getState() == true) {
						flagForeignKey = 1;
						parentModel = listParent.getSelectedItem();
					}

					// 如果没有设置合法路径就生成文件,创建"C:\\Model"文件夹
					if (path.equals(Constants.modelDir) == true) {
						File f = new File(path);
						f.mkdir();
					}

					// 判断文件是否存在
					File model = new File(path, fileName);

					if (model.exists() == false) {
						wr.fileCreate(jtCode.getText(), proList);// 调用fileCreate函数生成文件
						modelList.add(jtCode.getText());

						// 所有参数回复初始状态
						proList.clear();
						listProperty.removeAll();

						flagForeignKey = 0;
						jtCode.setText("");

						// 如果路径太长,状态栏分行显示
						if (path.length() > 35)
							actionPanel.setText("Model已经生成,请继续设置其他Model" + nl
									+ "生成文件为:" + nl + path.substring(0, 35)
									+ nl + path.substring(35, path.length())
									+ "\\" + fileName);
						else
							actionPanel.setText("生成文件为:" + nl + path + "\\"
									+ fileName);
					} else {
						// 如果文件存在,显示警告提示框
						warnDialog.setVisible(true);
					}
				}
			} else {
				actionPanel.setText("您还没有输入Model的名字,请在代码对话框输入");// 如果没有设置代码名
			}
		}

		// 退出
		else if (obj == jbExit) {
			this.dispose();
		}

		// 删除属性
		else if (obj == jbDel) {
			setButton(jbDel);
			reloadTime(this);

			int index = 1;
			// 当前列表里面有值才能删除
			if (listProperty.getItemCount() >= 1) {
				if (listProperty.getSelectedIndex() >= 0) {
					index = listProperty.getSelectedIndex();
					proList.remove(index);// 在参数数组里面删除
					listProperty.remove(index);// 在显示列表里面删除
					actionPanel.setText("属性已删除");
					jbDel.setBorder(unSelected);
				} else
					actionPanel.setText("请先选定属性");
			} else
				actionPanel.setText("没有可删除的选项");

			if (listProperty.getItemCount() >= 1)
				listProperty.select(index - 1);
		}

		// 修改属性
		else if (obj == jbEdit) {
			setButton(jbEdit);
			reloadTime(this);

			if (listProperty.getItemCount() > 0) {
				if (listProperty.getSelectedIndex() >= 0) {

					actionPanel.setText("修改已设置的属性");

					// 初始化外键列表
					SetupDialog.forList.removeAll();
					SetupDialog.forList.add("没有外键");
					SetupDialog.forList.select(0);

					File modelDir = new File(Constants.modelDir);
					if (modelDir.exists() == true
							|| path.equals(Constants.modelDir) == false) {
						// 将model下所有符合条件的model名加入外键列表
						setList(SetupDialog.forList);
					}

					setupDialog.edit();
					SetupDialog.editFlag = 1;
					setupDialog.setVisible(true);

				} else
					actionPanel.setText("请先选定属性");
			} else
				actionPanel.setText("还没有设置属性,请先设置属性。");
		}

		// 运行ant
		else if (obj == jbRun) {
			setButton(jbRun);
			reloadTime(this);

			this.setVisible(false);
			run(modelList);
			this.setVisible(true);
		}
	}

	// 主方法
	public static void main(String args[]) {
		JFrame.setDefaultLookAndFeelDecorated(true);
		JDialog.setDefaultLookAndFeelDecorated(true);
		Auto auto = new Auto();
		auto.setVisible(true);
	}

	/**
	 * 通过给定的文件名获得图像
	 * 
	 * @param filename
	 *            给定图像的文件名
	 * @return 图像
	 */
	Image getImage(String filename) {
		URLClassLoader urlLoader = (URLClassLoader) this.getClass()
				.getClassLoader();

		URL url = null;
		Image image = null;

		url = urlLoader.findResource(filename);
		image = Toolkit.getDefaultToolkit().getImage(url);
		MediaTracker mediatracker = new MediaTracker(this);

		try {
			mediatracker.addImage(image, 0);
			mediatracker.waitForID(0);
		} catch (InterruptedException _ex) {
			image = null;
		}
		if (mediatracker.isErrorID(0)) {
			image = null;
		}
		return image;
	}

	/**
	 * 勾选选择框时
	 */
	public void itemStateChanged(ItemEvent e) {
		Object obj = e.getSource();
		if (obj == checkParent) {
			setButton();
			if (checkParent.getState() == true) {

				// 显示parent可用的外键列表
				listParent.setVisible(true);
				listParent.removeAll();

				File modelDir = new File(Constants.modelDir);
				if (modelDir.exists() == true
						|| path.equals(Constants.modelDir) == false) {
					// 将路径下所有符合条件的model名加入listParent
					setList(listParent);
				}
			} else
				listParent.setVisible(false);
		}
	}

	/**
	 * 运行ant
	 */
	void run(ArrayList model) {
		int buildFlagg = 0;
		int appgenBuildValue = 1;
		int dbPrepareValue = 1;
		int dbLoadValue = 1;
		int deployValue = 1;
		String appgenBuild;

		String dbPrepare = "ant -buildfile " + ch + Auto.pathProject
				+ "\\build.xml" + ch + " db-prepare";
		String dbLoad = "ant -buildfile " + ch + Auto.pathProject

⌨️ 快捷键说明

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