|
@ -1,171 +0,0 @@
|
|||
import java.awt.BorderLayout;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Enumeration;
|
||||
import java.util.List;
|
||||
import java.util.zip.ZipEntry;
|
||||
import java.util.zip.ZipOutputStream;
|
||||
|
||||
import javax.swing.JButton;
|
||||
import javax.swing.JCheckBox;
|
||||
import javax.swing.JFileChooser;
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.JScrollPane;
|
||||
import javax.swing.JTree;
|
||||
import javax.swing.SwingUtilities;
|
||||
import javax.swing.UIManager;
|
||||
import javax.swing.event.TreeSelectionEvent;
|
||||
import javax.swing.event.TreeSelectionListener;
|
||||
import javax.swing.tree.DefaultMutableTreeNode;
|
||||
import javax.swing.tree.TreePath;
|
||||
|
||||
public class FileSelectionApp extends JFrame {
|
||||
private JTree fileTree;
|
||||
private JCheckBox[] checkBoxes;
|
||||
private JLabel statusLabel;
|
||||
|
||||
public FileSelectionApp() {
|
||||
setTitle("文件选择");
|
||||
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||
setSize(600, 400);
|
||||
setLocationRelativeTo(null);
|
||||
|
||||
// 创建选择按钮
|
||||
JButton selectButton = new JButton("打包选中的文件或文件夹");
|
||||
selectButton.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
selectItems();
|
||||
}
|
||||
});
|
||||
|
||||
// 创建文件树
|
||||
fileTree = new JTree(getFileTreeModel());
|
||||
fileTree.setRootVisible(false);
|
||||
fileTree.setShowsRootHandles(true);
|
||||
fileTree.addTreeSelectionListener(new TreeSelectionListener() {
|
||||
public void valueChanged(TreeSelectionEvent e) {
|
||||
updateStatusLabel();
|
||||
}
|
||||
});
|
||||
JScrollPane treeScrollPane = new JScrollPane(fileTree);
|
||||
|
||||
// 创建结果标签
|
||||
statusLabel = new JLabel();
|
||||
updateStatusLabel();
|
||||
|
||||
// 创建面板并添加组件
|
||||
JPanel panel = new JPanel(new BorderLayout());
|
||||
panel.add(selectButton, BorderLayout.NORTH);
|
||||
panel.add(treeScrollPane, BorderLayout.CENTER);
|
||||
panel.add(statusLabel, BorderLayout.SOUTH);
|
||||
|
||||
// 将面板添加到窗口
|
||||
add(panel);
|
||||
}
|
||||
|
||||
private DefaultMutableTreeNode getFileTreeModel() {
|
||||
File targetDir = new File("target/classes/");
|
||||
DefaultMutableTreeNode root = new DefaultMutableTreeNode(targetDir.getName());
|
||||
buildFileTree(root, targetDir);
|
||||
return root;
|
||||
}
|
||||
|
||||
private void buildFileTree(DefaultMutableTreeNode parent, File directory) {
|
||||
File[] files = directory.listFiles();
|
||||
if (files != null) {
|
||||
for (File file : files) {
|
||||
DefaultMutableTreeNode node = new DefaultMutableTreeNode(file.getName());
|
||||
parent.add(node);
|
||||
if (file.isDirectory()) {
|
||||
buildFileTree(node, file);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void selectItems() {
|
||||
List<File> selectedFiles = new ArrayList<>();
|
||||
DefaultMutableTreeNode rootNode = (DefaultMutableTreeNode) fileTree.getModel().getRoot();
|
||||
Enumeration<?> enumeration = rootNode.breadthFirstEnumeration();
|
||||
while (enumeration.hasMoreElements()) {
|
||||
DefaultMutableTreeNode node = (DefaultMutableTreeNode) enumeration.nextElement();
|
||||
if (node.isLeaf() && checkBoxes[node.getLevel()].isSelected()) {
|
||||
TreePath path = new TreePath(node.getPath());
|
||||
selectedFiles.add(new File(path.toString().substring(1).replace(", ", "/")));
|
||||
}
|
||||
}
|
||||
if (!selectedFiles.isEmpty()) {
|
||||
createZipFile(selectedFiles);
|
||||
} else {
|
||||
statusLabel.setText("请勾选要打包的文件或文件夹");
|
||||
}
|
||||
}
|
||||
|
||||
private void createZipFile(List<File> files) {
|
||||
JFileChooser fileChooser = new JFileChooser();
|
||||
int result = fileChooser.showSaveDialog(this);
|
||||
if (result == JFileChooser.APPROVE_OPTION) {
|
||||
File zipFile = fileChooser.getSelectedFile();
|
||||
try (ZipOutputStream zipOutputStream = new ZipOutputStream(new FileOutputStream(zipFile))) {
|
||||
for (File file : files) {
|
||||
addFileToZip(file, file.getName(), zipOutputStream);
|
||||
}
|
||||
statusLabel.setText("已将文件打包为:" + zipFile.getAbsolutePath());
|
||||
} catch (IOException e) {
|
||||
statusLabel.setText("打包文件时出现错误:" + e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void addFileToZip(File file, String entryName, ZipOutputStream zipOutputStream) throws IOException {
|
||||
if (file.isDirectory()) {
|
||||
File[] files = file.listFiles();
|
||||
if (files != null) {
|
||||
for (File child : files) {
|
||||
addFileToZip(child, entryName + "/" + child.getName(), zipOutputStream);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
byte[] buffer = new byte[1024];
|
||||
FileInputStream fis = new FileInputStream(file);
|
||||
zipOutputStream.putNextEntry(new ZipEntry(entryName));
|
||||
int length;
|
||||
while ((length = fis.read(buffer)) > 0) {
|
||||
zipOutputStream.write(buffer, 0, length);
|
||||
}
|
||||
zipOutputStream.closeEntry();
|
||||
fis.close();
|
||||
}
|
||||
}
|
||||
|
||||
private void updateStatusLabel() {
|
||||
TreePath[] paths = fileTree.getSelectionPaths();
|
||||
if (paths != null) {
|
||||
int selectedCount = paths.length;
|
||||
statusLabel.setText("已选中 " + selectedCount + " 个文件/文件夹");
|
||||
} else {
|
||||
statusLabel.setText("");
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
// 设置外观和风格
|
||||
try {
|
||||
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
public void run() {
|
||||
new FileSelectionApp().setVisible(true);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
BIN
checked.png
Before Width: | Height: | Size: 14 KiB |
7
pom.xml
|
@ -130,12 +130,7 @@
|
|||
<artifactId>easypoi-annotation</artifactId>
|
||||
<version>4.0.0</version>
|
||||
</dependency>
|
||||
<!-- https://mvnrepository.com/artifact/org.controlsfx/controlsfx -->
|
||||
<dependency>
|
||||
<groupId>org.controlsfx</groupId>
|
||||
<artifactId>controlsfx</artifactId>
|
||||
<version>8.40.14</version>
|
||||
</dependency>
|
||||
|
||||
|
||||
</dependencies>
|
||||
|
||||
|
|
|
@ -51,7 +51,7 @@ public class CompressPictureUtil {
|
|||
return compressPNG(image, quality);
|
||||
} else if ("jpeg".equalsIgnoreCase(formatName)) {
|
||||
return compressJPEG(image, quality);
|
||||
} else if ("bmp".equalsIgnoreCase(fileName)) {
|
||||
} else if ("bmp".equalsIgnoreCase(formatName)) {
|
||||
return compressBMP(image, quality);
|
||||
} else {
|
||||
return null;
|
||||
|
|
|
@ -1,88 +0,0 @@
|
|||
//
|
||||
// Source code recreated from a .class file by IntelliJ IDEA
|
||||
// (powered by FernFlower decompiler)
|
||||
//
|
||||
|
||||
package ln;
|
||||
|
||||
import org.apache.commons.codec.binary.Base64;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.security.InvalidKeyException;
|
||||
|
||||
public class LNParse {
|
||||
public LNParse() {
|
||||
}
|
||||
|
||||
public LNBean getLNBean(String licensefilepath, String key) throws Exception {
|
||||
byte[] licenseFile = Zip.getZipSomeByte(licensefilepath, "license");
|
||||
byte[] publicKey = Zip.getZipSomeByte(licensefilepath, "publicKey");
|
||||
byte[] licenseEncryptKey = Zip.getZipSomeByte(licensefilepath, "licenseEncryptKey");
|
||||
byte[] licenseFile2 = Zip.getZipSomeByte(licensefilepath, "license2");
|
||||
String realPublicKey = "";
|
||||
if ("emessage2".equals(key)) {
|
||||
realPublicKey = "MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAIJWRm0eoQNEgZB9aUlM1PoT0N7cKCBCfkecycpeKeg57e73Fcj4ik9uYrGB01t38ut45iHJi8TLoeORYuUAhWUCAwEAAQ==";
|
||||
} else if (!"ecology7".equals(key) && !"ecology8".equals(key)) {
|
||||
if ("ecology9".equals(key)) {
|
||||
realPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyC90YpaWPbLaQwqt3TYlRqYC+gDTivXiVU2ZnL+tVop7tm1Ss8gnXnkd1I0jr2ffQK6m4HIGdz4lyxOfJVuT9hwtDpnflxK5fBIpc6N5iB3bZkes3XMJTyXY+afvh7vKf9yW0p1ZgQkMp7Ty4nRNQ1H/JV7RIUohEM24udiZNZySLpIYeAxTl8gR/EKL/YCIxBQfFEyQtijB0+X6Sfd/CWgNGVPuPr8V5nUZm8vXIszWBSPamD/yfvwNI9PAOII7OBNMXOC9BFAjTdCKkxdRS4ovu2V9STxAu0P8hhTnH0/zpxi4VOn32povh4f5J7x5eV+vSaN5G1G1zVPs5lc62QIDAQAB";
|
||||
}
|
||||
} else {
|
||||
realPublicKey = "MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALUgEZ7eGZmJJM/3Ajj5Zdd2MG1ZONVybJV+v+jQT+csNWBBqxosLVlWvwaod1ix8Gg9GsyRJgoTs1Mg25raZcsCAwEAAQ==";
|
||||
}
|
||||
|
||||
String publicKeyStr = new String(Base64.encodeBase64(publicKey));
|
||||
if (!realPublicKey.equals(publicKeyStr)) {
|
||||
throw new Exception("license error!");
|
||||
} else {
|
||||
JSONObject jsonLicense;
|
||||
try {
|
||||
byte[] licenseKey = RSACoder.decryptByPublicKey(licenseEncryptKey, publicKey);
|
||||
jsonLicense = new JSONObject(new String(DESCoder.decrypt(licenseFile, licenseKey), "GBK"));
|
||||
} catch (InvalidKeyException var15) {
|
||||
var15.printStackTrace();
|
||||
byte[] licenseInfo2 = DESCoder.decrypt(licenseFile2, key.getBytes());
|
||||
jsonLicense = new JSONObject(new String(licenseInfo2));
|
||||
}
|
||||
|
||||
LNBean lnb = new LNBean();
|
||||
lnb.setCompanyname(jsonLicense.getString("companyname"));
|
||||
lnb.setLicensecode(jsonLicense.getString("licensecode"));
|
||||
lnb.setHrmnum(jsonLicense.getString("hrmnum"));
|
||||
// lnb.setExpiredate(jsonLicense.getString("expiredate"));
|
||||
lnb.setExpiredate("2222-12-31");
|
||||
lnb.setConcurrentFlag(jsonLicense.getString("concurrentFlag"));
|
||||
lnb.setLicense(jsonLicense.getString("license"));
|
||||
|
||||
try {
|
||||
lnb.setCid(jsonLicense.getString("cid"));
|
||||
} catch (Exception var14) {
|
||||
System.out.println(var14);
|
||||
}
|
||||
|
||||
try {
|
||||
lnb.setScType(jsonLicense.getString("scType"));
|
||||
} catch (Exception var13) {
|
||||
System.out.println(var13);
|
||||
}
|
||||
|
||||
try {
|
||||
lnb.setScCount(jsonLicense.getString("scCount"));
|
||||
} catch (Exception var12) {
|
||||
System.out.println(var12);
|
||||
}
|
||||
|
||||
return lnb;
|
||||
}
|
||||
}
|
||||
|
||||
public boolean checkLicesne(LNBean lnb) {
|
||||
boolean returnValue = false;
|
||||
String src = lnb.getCompanyname() + lnb.getLicensecode() + "ALL" + lnb.getHrmnum() + lnb.getExpiredate() + lnb.getConcurrentFlag();
|
||||
MD5 md5 = new MD5();
|
||||
if (lnb.getLicense().equals(md5.getMD5ofStr(src))) {
|
||||
returnValue = true;
|
||||
}
|
||||
|
||||
return returnValue;
|
||||
}
|
||||
}
|
|
@ -1,18 +1,14 @@
|
|||
package weaver.xuanran.wang.cssc.cms.service.impl;
|
||||
|
||||
import aiyh.utils.Util;
|
||||
import aiyh.utils.excention.CustomerException;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.apache.commons.collections.MapUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.log4j.Logger;
|
||||
import sun.security.krb5.internal.PAData;
|
||||
import weaver.conn.RecordSet;
|
||||
import weaver.conn.RecordSetTrans;
|
||||
import weaver.cssc.workflow.voucher.util.InterfaceLoggerDao;
|
||||
import weaver.cssc.workflow.voucher.util.VoucherConstants;
|
||||
import weaver.general.TimeUtil;
|
||||
import weaver.soa.workflow.request.RequestInfo;
|
||||
import weaver.xiao.commons.config.entity.RequestMappingConfig;
|
||||
|
|
|
@ -6,10 +6,13 @@ import builderpackage.FileTreeBuilder;
|
|||
import javafx.application.Application;
|
||||
import javafx.geometry.Insets;
|
||||
import javafx.geometry.Pos;
|
||||
import javafx.scene.Cursor;
|
||||
import javafx.scene.Node;
|
||||
import javafx.scene.Scene;
|
||||
import javafx.scene.control.Button;
|
||||
import javafx.scene.control.Label;
|
||||
import javafx.scene.control.TextField;
|
||||
import javafx.scene.control.*;
|
||||
import javafx.scene.image.Image;
|
||||
import javafx.scene.image.ImageView;
|
||||
import javafx.scene.layout.BorderPane;
|
||||
import javafx.scene.layout.HBox;
|
||||
|
@ -17,9 +20,11 @@ import javafx.scene.layout.VBox;
|
|||
import javafx.stage.FileChooser;
|
||||
import javafx.stage.Stage;
|
||||
|
||||
import java.awt.*;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
|
||||
public class BuilderPackageEcology extends Application {
|
||||
|
@ -34,20 +39,12 @@ public class BuilderPackageEcology extends Application {
|
|||
private TextField packageNumberTextField;
|
||||
private TextField functionNameTextField;
|
||||
|
||||
private final Node folderIcon = new ImageView(
|
||||
new Image(Objects.requireNonNull(getClass().getResourceAsStream("icons/folder.png")))
|
||||
);// 定义一个图片类型节点对象
|
||||
private final Node fileIcon = new ImageView(
|
||||
new Image(Objects.requireNonNull(getClass().getResourceAsStream("icons/file.png")))
|
||||
);// 定义一个图片类型节点对象
|
||||
|
||||
@Override
|
||||
public void start(Stage primaryStage) {
|
||||
primaryStage.setTitle("EBU7部开发一部自动打包工具");
|
||||
|
||||
FileInfo fileInfo = FileTreeBuilder.buildFileTree();
|
||||
rootItem = createTreeItem(fileInfo);
|
||||
|
||||
treeView = new TreeView<>(rootItem);
|
||||
treeView.setShowRoot(false);
|
||||
treeView.setCellFactory(treeViewParam -> {
|
||||
|
@ -83,10 +80,14 @@ public class BuilderPackageEcology extends Application {
|
|||
buttonBox.setPadding(new Insets(10));
|
||||
buttonBox.setAlignment(Pos.CENTER_RIGHT);
|
||||
Map<String, String> param = new HashMap<>(8);
|
||||
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
|
||||
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(FileTreeBuilder.cusDateFormat);
|
||||
Date date = new Date();
|
||||
param.put("date", simpleDateFormat.format(date));
|
||||
Button button = new Button("生成升级包");
|
||||
button.setId("create-btn");
|
||||
button.setCursor(Cursor.HAND);
|
||||
button.getStyleClass().add("but");
|
||||
button.getStyleClass().add("primary");
|
||||
button.setOnAction(event -> {
|
||||
// 输出包编号和功能名称的值
|
||||
String packageNumber = packageNumberTextField.getText();
|
||||
|
@ -131,7 +132,7 @@ public class BuilderPackageEcology extends Application {
|
|||
functionNameTextField.setText("");
|
||||
showSuccessAlert("升级包制作成功!");
|
||||
System.out.println("压缩包位置: " + outputFile.getPath());
|
||||
|
||||
Desktop.getDesktop().open(outputFile.getParentFile());
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
@ -143,10 +144,11 @@ public class BuilderPackageEcology extends Application {
|
|||
checkBoxBox.setAlignment(Pos.CENTER_RIGHT);
|
||||
|
||||
CheckBox checkBox = new CheckBox("是否是信创环境");
|
||||
checkBox.setCursor(Cursor.HAND);
|
||||
checkBox.getStyleClass().add("check-box");
|
||||
checkBox.selectedProperty().addListener((observable, oldValue, newValue) -> {
|
||||
this.isEcology = newValue;
|
||||
});
|
||||
|
||||
checkBoxBox.getChildren().add(checkBox);
|
||||
|
||||
|
||||
|
@ -154,8 +156,8 @@ public class BuilderPackageEcology extends Application {
|
|||
root.setBottom(buttonBox);
|
||||
|
||||
|
||||
Scene scene = new Scene(root, 600, 400);
|
||||
scene.getStylesheets().add("style.css"); // 加载自定义的 CSS 文件
|
||||
Scene scene = new Scene(root, 600, 600);
|
||||
scene.getStylesheets().add(getClass().getResource("style.css").toExternalForm()); // 加载自定义的 CSS 文件
|
||||
scene.getRoot().setStyle("-fx-font-family: 'serif'");
|
||||
primaryStage.setScene(scene);
|
||||
primaryStage.show();
|
||||
|
@ -163,11 +165,6 @@ public class BuilderPackageEcology extends Application {
|
|||
|
||||
private TreeItem<FileInfo> createTreeItem(FileInfo fileInfo) {
|
||||
TreeItem<FileInfo> treeItem = new TreeItem<>(fileInfo);
|
||||
if (fileInfo.getFileType().equals(FileTreeBuilder.DIRECTORY_TYPE)) {
|
||||
treeItem.setGraphic(folderIcon);
|
||||
} else {
|
||||
treeItem.setGraphic(fileIcon);
|
||||
}
|
||||
List<FileInfo> children = fileInfo.getChildren();
|
||||
if (children != null) {
|
||||
for (FileInfo child : children) {
|
||||
|
@ -214,10 +211,11 @@ public class BuilderPackageEcology extends Application {
|
|||
|
||||
public CheckBoxTreeCell() {
|
||||
checkBox = new CheckBox();
|
||||
checkBox.getStyleClass().add("check-box");
|
||||
checkBox.selectedProperty().addListener((observable, oldValue, newValue) -> {
|
||||
FileInfo fileInfo = getItem();
|
||||
fileInfo.setSelected(newValue);
|
||||
String filePath = fileInfo.getFilePath();
|
||||
FileInfo item = getItem();
|
||||
item.setSelected(newValue);
|
||||
String filePath = item.getFilePath();
|
||||
if (newValue) {
|
||||
if (!filePaths.contains(filePath)) {
|
||||
filePaths.add(filePath);
|
||||
|
@ -225,7 +223,6 @@ public class BuilderPackageEcology extends Application {
|
|||
} else {
|
||||
filePaths.remove(filePath);
|
||||
}
|
||||
System.out.println(fileInfo.getFilePath());
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -237,7 +234,36 @@ public class BuilderPackageEcology extends Application {
|
|||
setGraphic(null);
|
||||
} else {
|
||||
checkBox.setSelected(item.isSelected());
|
||||
checkBox.setText(item.getFileName());
|
||||
checkBox.setText(item.getFileName().replace("_", "__"));
|
||||
if (item.isDirectory()) {
|
||||
Node rootIcon = new ImageView(
|
||||
new javafx.scene.image.Image(Objects.requireNonNull(getClass().getResourceAsStream("icons/folder.png")))
|
||||
);// 定义一个图片类型节点对象
|
||||
|
||||
checkBox.setGraphic(rootIcon);
|
||||
} else if (item.getFileName().endsWith(".jar")) {
|
||||
Node fileIcon = new ImageView(
|
||||
new javafx.scene.image.Image(Objects.requireNonNull(getClass().getResourceAsStream("icons/jar.png")))
|
||||
);
|
||||
checkBox.setGraphic(fileIcon);
|
||||
} else if (item.getFileName().endsWith(".class")) {
|
||||
Node fileIcon = new ImageView(
|
||||
new javafx.scene.image.Image(Objects.requireNonNull(getClass().getResourceAsStream("icons/class.png")))
|
||||
);
|
||||
checkBox.setGraphic(fileIcon);
|
||||
} else if (item.getFileName().endsWith(".properties")) {
|
||||
Node fileIcon = new ImageView(
|
||||
new javafx.scene.image.Image(Objects.requireNonNull(getClass().getResourceAsStream("icons/code.png")))
|
||||
);
|
||||
checkBox.setGraphic(fileIcon);
|
||||
} else {
|
||||
Node fileIcon = new ImageView(
|
||||
new javafx.scene.image.Image(Objects.requireNonNull(getClass().getResourceAsStream("icons/file.png")))
|
||||
);
|
||||
checkBox.setGraphic(fileIcon);
|
||||
}
|
||||
checkBox.setCursor(Cursor.HAND);
|
||||
checkBox.setId("tree-checkbox");
|
||||
setGraphic(checkBox);
|
||||
// setGraphic(folderIcon);
|
||||
}
|
||||
|
@ -258,7 +284,6 @@ public class BuilderPackageEcology extends Application {
|
|||
for (Map.Entry<String, String> entry : placeholderMap.entrySet()) {
|
||||
String placeholder = "${" + entry.getKey() + "}";
|
||||
String value = entry.getValue();
|
||||
|
||||
// 检查占位符是否存在于字符串中
|
||||
if (outputString.indexOf(placeholder) != -1) {
|
||||
// 使用 String 类的 replace 方法进行占位符的替换
|
||||
|
|
|
@ -2,6 +2,8 @@ package builderpackage;
|
|||
|
||||
import aiyh.utils.excention.CustomerException;
|
||||
import aiyh.utils.tool.cn.hutool.core.util.StrUtil;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import weaver.common.util.string.StringUtil;
|
||||
|
||||
import java.io.*;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
@ -19,6 +21,8 @@ public class FileTreeBuilder {
|
|||
public static String zipDefaultName;
|
||||
|
||||
public static String defaultDir;
|
||||
|
||||
public static String cusDateFormat;
|
||||
|
||||
public static FileInfo buildFileTree() {
|
||||
String directoryPath = "target";
|
||||
|
@ -50,6 +54,10 @@ public class FileTreeBuilder {
|
|||
classPath = classRootPath;
|
||||
zipDefaultName = properties.getProperty("zipDefaultName");
|
||||
defaultDir = properties.getProperty("defaultDir");
|
||||
cusDateFormat = properties.getProperty("cusDateFormat");
|
||||
if(StrUtil.isBlank(cusDateFormat)){
|
||||
cusDateFormat = "yyyyMMdd";
|
||||
}
|
||||
List<String> blacklistPrefixes = Arrays.asList(
|
||||
directoryPath + "generated-sources",
|
||||
directoryPath + "generated-test-sources",
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
package youhong.ai.utiltest;
|
||||
|
||||
import basetest.BaseTest;
|
||||
import com.customization.youhong.taibao.compresspicture.util.CompressPictureUtil;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
|
||||
/**
|
||||
* <h1>图片压缩测试</h1>
|
||||
*
|
||||
* <p>create: 2023/7/11 14:40</p>
|
||||
*
|
||||
* @author youHong.ai
|
||||
*/
|
||||
public class ImageComperssorTest extends BaseTest {
|
||||
|
||||
|
||||
@Test
|
||||
public void testee() throws IOException {
|
||||
InputStream inputStream = CompressPictureUtil.compressImage(new FileInputStream("/Users/aoey.oct.22/Downloads/消息提醒异常.bmp"), "消息异常提醒.bmp", 0.5F);
|
||||
FileOutputStream fos = new FileOutputStream("/Users/aoey.oct.22/Downloads/消息提醒异常-1.bmp");
|
||||
byte[] b = new byte[1024];
|
||||
while ((inputStream.read(b)) != -1) {
|
||||
fos.write(b);// 写入数据
|
||||
}
|
||||
inputStream.close();
|
||||
fos.close();// 保存数据
|
||||
}
|
||||
}
|
|
@ -172,6 +172,8 @@ public class ImageCompressor {
|
|||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
/*颜色*/
|
||||
|
||||
* {
|
||||
-primary-color: #6690FF;
|
||||
-success-color: #33C651;
|
||||
-info-color: #52A8F9;
|
||||
-warn-color: #FFA10A;
|
||||
-danger-color: #FF4C3F;
|
||||
|
||||
-text-color: #303133;
|
||||
-border-color: #CDD0D6;
|
||||
-base-color: #F2F3F5;
|
||||
}
|
After Width: | Height: | Size: 487 B |
After Width: | Height: | Size: 400 B |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 286 B |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 289 B |
After Width: | Height: | Size: 413 B |
|
@ -1,22 +1,25 @@
|
|||
@import "cf-colors.css";
|
||||
|
||||
|
||||
.tree-view {
|
||||
-fx-padding: 10px;
|
||||
-fx-padding: 15px;
|
||||
-fx-start-margin: 5px;
|
||||
-fx-alignment: center;
|
||||
}
|
||||
|
||||
.tree-cell {
|
||||
-fx-padding: 5px;
|
||||
-fx-padding: 0;
|
||||
-fx-font-size: 14px;
|
||||
}
|
||||
|
||||
.tree-cell .tree-disclosure-node {
|
||||
-fx-graphic: url("icons/folder.png");
|
||||
.tree-cell.expanded {
|
||||
-fx-alignment: center;
|
||||
}
|
||||
|
||||
.tree-cell .tree-disclosure-node.expanded {
|
||||
-fx-graphic: url("icons/folder.png");
|
||||
.tree-cell:selected {
|
||||
-fx-background-color: -primary-color;
|
||||
}
|
||||
|
||||
.tree-cell .tree-leaf {
|
||||
-fx-graphic: url("icons/file.png");
|
||||
}
|
||||
|
||||
.button-box {
|
||||
-fx-spacing: 10px;
|
||||
|
@ -26,3 +29,248 @@
|
|||
.checkbox-label {
|
||||
-fx-padding: 0 0 0 5px;
|
||||
}
|
||||
|
||||
|
||||
.check-box {
|
||||
-fx-cursor: hand;
|
||||
}
|
||||
|
||||
.check-box {
|
||||
-fx-pref-height: 32px;
|
||||
}
|
||||
|
||||
.check-box .box {
|
||||
-fx-pref-height: 16px;
|
||||
-fx-pref-width: 16px;
|
||||
-fx-border-radius: 3px;
|
||||
-fx-border-color: -border-color;
|
||||
-fx-background-color: transparent;
|
||||
-fx-background-radius: 3px;
|
||||
}
|
||||
|
||||
.check-box .box .mark {
|
||||
-fx-background-color: rgb(255, 255, 255);
|
||||
-fx-background-insets: 3px 2px;
|
||||
-fx-shape: "M369.792 704.32L930.304 128 1024 223.616 369.984 896l-20.288-20.864-0.128 0.128L0 516.8 96.128 423.68l273.664 280.64z";
|
||||
}
|
||||
|
||||
.check-box .container {
|
||||
-fx-text-fill: -text-color;
|
||||
-fx-font-size: 14px;
|
||||
}
|
||||
|
||||
.check-box:focused {
|
||||
-fx-border-color: -primary-color;
|
||||
}
|
||||
|
||||
.check-box:selected {
|
||||
-fx-text-fill: -primary-color;
|
||||
}
|
||||
|
||||
.check-box:selected .box {
|
||||
-fx-border-color: -primary-color;
|
||||
-fx-background-color: -primary-color;
|
||||
}
|
||||
|
||||
|
||||
.but {
|
||||
-fx-background-insets: 0;
|
||||
-fx-border-radius: 3px;
|
||||
/*-fx-border-color: transparent;*/
|
||||
-fx-background-radius: 3px;
|
||||
-fx-pref-height: 32px;
|
||||
/*-fx-min-height: 32px;*/
|
||||
-fx-padding: 0px 15px 0px 15px;
|
||||
-fx-font-size: 14px;
|
||||
-fx-font-weight: 500;
|
||||
-fx-text-fill: rgb(255, 255, 255);
|
||||
-fx-cursor: hand;
|
||||
}
|
||||
|
||||
.but > .ikonli-font-icon {
|
||||
-fx-icon-size: 17px;
|
||||
-fx-icon-color: rgb(255, 255, 255);
|
||||
}
|
||||
|
||||
.but.primary {
|
||||
-fx-background-color: -primary-color;
|
||||
}
|
||||
|
||||
.but.success {
|
||||
-fx-background-color: -success-color;
|
||||
}
|
||||
|
||||
.but.info {
|
||||
-fx-background-color: -info-color;
|
||||
}
|
||||
|
||||
.but.warn {
|
||||
-fx-background-color: -warn-color;
|
||||
}
|
||||
|
||||
.but.danger {
|
||||
-fx-background-color: -danger-color;
|
||||
}
|
||||
|
||||
/*hover:*/ /*focused:*/
|
||||
.but.primary:hover, .but.primary:focused {
|
||||
-fx-background-color: derive(-primary-color, 30%);
|
||||
}
|
||||
|
||||
.but.success:hover, .but.success:focused {
|
||||
-fx-background-color: derive(-success-color, 30%);
|
||||
}
|
||||
|
||||
.but.info:hover, .but.info:focused {
|
||||
-fx-background-color: derive(-info-color, 30%);
|
||||
}
|
||||
|
||||
.but.warn:hover, .but.warn:focused {
|
||||
-fx-background-color: derive(-warn-color, 30%);
|
||||
}
|
||||
|
||||
.but.danger:hover, .but.danger:focused {
|
||||
-fx-background-color: derive(-danger-color, 30%);
|
||||
}
|
||||
|
||||
/*pressed:*/
|
||||
.but.primary:pressed {
|
||||
-fx-background-color: derive(-primary-color, -10%);
|
||||
}
|
||||
|
||||
.but.success:pressed {
|
||||
-fx-background-color: derive(-success-color, -10%);
|
||||
}
|
||||
|
||||
.but.info:pressed {
|
||||
-fx-background-color: derive(-info-color, -10%);
|
||||
}
|
||||
|
||||
.but.warn:pressed {
|
||||
-fx-background-color: derive(-warn-color, -10%);
|
||||
}
|
||||
|
||||
.but.danger:pressed {
|
||||
-fx-background-color: derive(-danger-color, -10%);
|
||||
}
|
||||
|
||||
/*圆角按钮*/
|
||||
.but.round {
|
||||
-fx-border-radius: 16px;
|
||||
-fx-background-radius: 16px;
|
||||
}
|
||||
|
||||
/*朴素按钮*/
|
||||
.but.plain, .but.plain:focused {
|
||||
-fx-background-color: transparent;
|
||||
}
|
||||
|
||||
.but.primary.plain {
|
||||
-fx-border-color: -primary-color;
|
||||
-fx-text-fill: -primary-color;
|
||||
}
|
||||
|
||||
.but.success.plain {
|
||||
-fx-border-color: -success-color;
|
||||
-fx-text-fill: -success-color;
|
||||
}
|
||||
|
||||
.but.info.plain {
|
||||
-fx-border-color: -info-color;
|
||||
-fx-text-fill: -info-color;
|
||||
}
|
||||
|
||||
.but.warn.plain {
|
||||
-fx-border-color: -warn-color;
|
||||
-fx-text-fill: -warn-color;
|
||||
}
|
||||
|
||||
.but.danger.plain {
|
||||
-fx-border-color: -danger-color;
|
||||
-fx-text-fill: -danger-color;
|
||||
}
|
||||
|
||||
.but.primary.plain > .ikonli-font-icon {
|
||||
-fx-icon-color: -primary-color;
|
||||
}
|
||||
|
||||
.but.success.plain > .ikonli-font-icon {
|
||||
-fx-icon-color: -success-color;
|
||||
}
|
||||
|
||||
.but.info.plain > .ikonli-font-icon {
|
||||
-fx-icon-color: -info-color;
|
||||
}
|
||||
|
||||
.but.warn.plain > .ikonli-font-icon {
|
||||
-fx-icon-color: -warn-color;
|
||||
}
|
||||
|
||||
.but.danger.plain > .ikonli-font-icon {
|
||||
-fx-icon-color: -danger-color;
|
||||
}
|
||||
|
||||
.but.primary.plain:hover > .ikonli-font-icon {
|
||||
-fx-icon-color: rgb(255, 255, 255);
|
||||
}
|
||||
|
||||
.but.success.plain:hover > .ikonli-font-icon {
|
||||
-fx-icon-color: rgb(255, 255, 255);
|
||||
}
|
||||
|
||||
.but.info.plain:hover > .ikonli-font-icon {
|
||||
-fx-icon-color: rgb(255, 255, 255);
|
||||
}
|
||||
|
||||
.but.warn.plain:hover > .ikonli-font-icon {
|
||||
-fx-icon-color: rgb(255, 255, 255);
|
||||
}
|
||||
|
||||
.but.danger.plain:hover > .ikonli-font-icon {
|
||||
-fx-icon-color: rgb(255, 255, 255);
|
||||
}
|
||||
|
||||
.but.primary.plain:hover {
|
||||
-fx-background-color: -primary-color;
|
||||
-fx-text-fill: rgb(255, 255, 255);
|
||||
}
|
||||
|
||||
.but.success.plain:hover {
|
||||
-fx-background-color: -success-color;
|
||||
-fx-text-fill: rgb(255, 255, 255);
|
||||
}
|
||||
|
||||
.but.info.plain:hover {
|
||||
-fx-background-color: -info-color;
|
||||
-fx-text-fill: rgb(255, 255, 255);
|
||||
}
|
||||
|
||||
.but.warn.plain:hover {
|
||||
-fx-background-color: -warn-color;
|
||||
-fx-text-fill: rgb(255, 255, 255);
|
||||
}
|
||||
|
||||
.but.danger.plain:hover {
|
||||
-fx-background-color: -danger-color;
|
||||
-fx-text-fill: rgb(255, 255, 255);
|
||||
}
|
||||
|
||||
.but.primary.plain:pressed {
|
||||
-fx-background-color: derive(-primary-color, -10%);
|
||||
}
|
||||
|
||||
.but.success.plain:pressed {
|
||||
-fx-background-color: derive(-success-color, -10%);
|
||||
}
|
||||
|
||||
.but.info.plain:pressed {
|
||||
-fx-background-color: derive(-info-color, -10%);
|
||||
}
|
||||
|
||||
.but.warn.plain:pressed {
|
||||
-fx-background-color: derive(-warn-color, -10%);
|
||||
}
|
||||
|
||||
.but.danger.plain:pressed {
|
||||
-fx-background-color: derive(-danger-color, -10%);
|
||||
}
|
BIN
unchecked.png
Before Width: | Height: | Size: 14 KiB |