修复了上传长度为数据片整数倍的文件数组越界的BUG;为云文件上传与下载增加了传输进度条;隐藏了主页中除报销外的其它内容

This commit is contained in:
my-style
2020-03-14 23:04:21 +08:00
parent 77414cf9c5
commit 6fa05859ae
63 changed files with 681 additions and 327 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+164 -240
View File
@@ -7,43 +7,12 @@
</component>
<component name="ChangeListManager">
<list default="true" id="f2ca1002-1ec5-49f3-ab6f-fb7dec9c9e4d" name="Default Changelist" comment="">
<change beforePath="$PROJECT_DIR$/.gradle/5.5.1/executionHistory/executionHistory.bin" beforeDir="false" afterPath="$PROJECT_DIR$/.gradle/5.5.1/executionHistory/executionHistory.bin" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.gradle/5.5.1/executionHistory/executionHistory.lock" beforeDir="false" afterPath="$PROJECT_DIR$/.gradle/5.5.1/executionHistory/executionHistory.lock" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.gradle/5.5.1/fileHashes/fileHashes.bin" beforeDir="false" afterPath="$PROJECT_DIR$/.gradle/5.5.1/fileHashes/fileHashes.bin" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.gradle/5.5.1/fileHashes/fileHashes.lock" beforeDir="false" afterPath="$PROJECT_DIR$/.gradle/5.5.1/fileHashes/fileHashes.lock" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.gradle/5.5.1/javaCompile/classAnalysis.bin" beforeDir="false" afterPath="$PROJECT_DIR$/.gradle/5.5.1/javaCompile/classAnalysis.bin" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.gradle/5.5.1/javaCompile/javaCompile.lock" beforeDir="false" afterPath="$PROJECT_DIR$/.gradle/5.5.1/javaCompile/javaCompile.lock" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.gradle/buildOutputCleanup/buildOutputCleanup.lock" beforeDir="false" afterPath="$PROJECT_DIR$/.gradle/buildOutputCleanup/buildOutputCleanup.lock" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/build.gradle" beforeDir="false" afterPath="$PROJECT_DIR$/build.gradle" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ndn/pib.db" beforeDir="false" afterPath="$PROJECT_DIR$/ndn/pib.db" afterDir="false" />
<change beforePath="$PROJECT_DIR$/out/production/classes/cn/minoa/MainApp$1.class" beforeDir="false" afterPath="$PROJECT_DIR$/out/production/classes/cn/minoa/MainApp$1.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/out/production/classes/cn/minoa/MainApp.class" beforeDir="false" afterPath="$PROJECT_DIR$/out/production/classes/cn/minoa/MainApp.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/out/production/classes/cn/minoa/dataRequestInterface/MinoaDataAPI$4.class" beforeDir="false" afterPath="$PROJECT_DIR$/out/production/classes/cn/minoa/dataRequestInterface/MinoaDataAPI$4.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/out/production/classes/cn/minoa/dataRequestInterface/MinoaDataAPI$5.class" beforeDir="false" afterPath="$PROJECT_DIR$/out/production/classes/cn/minoa/dataRequestInterface/MinoaDataAPI$5.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/out/production/classes/cn/minoa/dataRequestInterface/MinoaDataAPI$6.class" beforeDir="false" afterPath="$PROJECT_DIR$/out/production/classes/cn/minoa/dataRequestInterface/MinoaDataAPI$6.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/out/production/classes/cn/minoa/dataRequestInterface/MinoaDataAPI$7.class" beforeDir="false" afterPath="$PROJECT_DIR$/out/production/classes/cn/minoa/dataRequestInterface/MinoaDataAPI$7.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/out/production/classes/cn/minoa/dataRequestInterface/MinoaDataAPI$8.class" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/out/production/classes/cn/minoa/dataRequestInterface/MinoaDataAPI.class" beforeDir="false" afterPath="$PROJECT_DIR$/out/production/classes/cn/minoa/dataRequestInterface/MinoaDataAPI.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/out/production/classes/cn/minoa/util/StringByteLengthUtil.class" beforeDir="false" afterPath="$PROJECT_DIR$/out/production/classes/cn/minoa/util/StringByteLengthUtil.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/out/production/classes/cn/minoa/view/login/LoginOverviewController.class" beforeDir="false" afterPath="$PROJECT_DIR$/out/production/classes/cn/minoa/view/login/LoginOverviewController.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/out/production/classes/cn/minoa/view/login/RegisterOverviewController.class" beforeDir="false" afterPath="$PROJECT_DIR$/out/production/classes/cn/minoa/view/login/RegisterOverviewController.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/out/production/classes/cn/minoa/view/login/SettingOverviewController.class" beforeDir="false" afterPath="$PROJECT_DIR$/out/production/classes/cn/minoa/view/login/SettingOverviewController.class" afterDir="false" />
<change beforePath="$PROJECT_DIR$/out/production/resources/db/settings.properties" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/out/production/resources/fxml/login/LoginOverview.fxml" beforeDir="false" afterPath="$PROJECT_DIR$/out/production/resources/fxml/login/LoginOverview.fxml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/out/production/resources/fxml/login/RegisterOverview.fxml" beforeDir="false" afterPath="$PROJECT_DIR$/out/production/resources/fxml/login/RegisterOverview.fxml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/out/production/resources/fxml/login/SettingOverview.fxml" beforeDir="false" afterPath="$PROJECT_DIR$/out/production/resources/fxml/login/SettingOverview.fxml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/images/settting_gear.png" beforeDir="false" afterPath="$PROJECT_DIR$/resources/images/setting_gear.png" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ndn/settings.properties" beforeDir="false" afterPath="$PROJECT_DIR$/ndn/settings.properties" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/cn/minoa/MainApp.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/cn/minoa/MainApp.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/cn/minoa/dataRequestInterface/MinoaDataAPI.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/cn/minoa/dataRequestInterface/MinoaDataAPI.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/cn/minoa/util/StringByteLengthUtil.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/cn/minoa/util/StringByteLengthUtil.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/cn/minoa/view/login/LoginOverviewController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/cn/minoa/view/login/LoginOverviewController.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/cn/minoa/view/login/RegisterOverviewController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/cn/minoa/view/login/RegisterOverviewController.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/cn/minoa/view/login/SettingOverviewController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/cn/minoa/view/login/SettingOverviewController.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/resources/db/settings.properties" beforeDir="false" afterPath="$PROJECT_DIR$/ndn/settings.properties" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/resources/fxml/login/LoginOverview.fxml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/fxml/login/LoginOverview.fxml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/resources/fxml/login/RegisterOverview.fxml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/fxml/login/RegisterOverview.fxml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/resources/fxml/login/SettingOverview.fxml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/fxml/login/SettingOverview.fxml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/cn/minoa/view/mine/MyCloudFileController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/cn/minoa/view/mine/MyCloudFileController.java" afterDir="false" />
</list>
<ignored path="$PROJECT_DIR$/out/" />
<ignored path="$PROJECT_DIR$/.gradle/" />
@@ -118,7 +87,8 @@
<session id="-17715935">
<usages-collector id="statistics.lifecycle.project">
<counts>
<entry key="project.closed" value="10" />
<entry key="project.closed" value="11" />
<entry key="project.open.time.17" value="1" />
<entry key="project.open.time.18" value="4" />
<entry key="project.open.time.19" value="2" />
<entry key="project.open.time.2" value="1" />
@@ -128,7 +98,7 @@
<entry key="project.open.time.24" value="1" />
<entry key="project.open.time.26" value="1" />
<entry key="project.open.time.3" value="1" />
<entry key="project.opened" value="17" />
<entry key="project.opened" value="18" />
</counts>
</usages-collector>
<usages-collector id="statistics.file.extensions.open">
@@ -138,7 +108,7 @@
<entry key="css" value="14" />
<entry key="fxml" value="23" />
<entry key="gradle" value="7" />
<entry key="java" value="172" />
<entry key="java" value="180" />
<entry key="png" value="5" />
<entry key="properties" value="7" />
<entry key="txt" value="2" />
@@ -151,7 +121,7 @@
<entry key="CSS" value="14" />
<entry key="Groovy" value="7" />
<entry key="Image" value="5" />
<entry key="JAVA" value="172" />
<entry key="JAVA" value="180" />
<entry key="Manifest" value="1" />
<entry key="PLAIN_TEXT" value="2" />
<entry key="Properties" value="7" />
@@ -163,7 +133,7 @@
<entry key="MF" value="92" />
<entry key="fxml" value="4" />
<entry key="gradle" value="438" />
<entry key="java" value="13835" />
<entry key="java" value="16501" />
<entry key="properties" value="87" />
<entry key="txt" value="89" />
</counts>
@@ -171,7 +141,7 @@
<usages-collector id="statistics.file.types.edit">
<counts>
<entry key="Groovy" value="438" />
<entry key="JAVA" value="13835" />
<entry key="JAVA" value="16501" />
<entry key="Manifest" value="92" />
<entry key="PLAIN_TEXT" value="89" />
<entry key="Properties" value="87" />
@@ -185,85 +155,25 @@
</component>
<component name="FileEditorManager">
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
<file pinned="false" current-in-tab="false">
<file pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/MainApp.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="193">
<caret line="131" column="24" selection-start-line="131" selection-start-column="24" selection-end-line="131" selection-end-column="24" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/util/StringByteLengthUtil.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="249">
<caret line="22" column="60" selection-start-line="22" selection-start-column="60" selection-end-line="22" selection-end-column="60" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/dataRequestInterface/MinoaDataAPI.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="168">
<caret line="573" column="84" selection-start-line="573" selection-start-column="84" selection-end-line="573" selection-end-column="84" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/build.gradle">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="125">
<caret line="11" selection-start-line="11" selection-end-line="11" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/dataRequestInterface/creatNDNKey.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="25">
<caret line="9" column="29" selection-start-line="9" selection-start-column="29" selection-end-line="9" selection-end-column="29" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/view/login/LoginOverviewController.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="293">
<caret line="396" column="34" lean-forward="true" selection-start-line="396" selection-start-column="34" selection-end-line="396" selection-end-column="34" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/view/login/RegisterOverviewController.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="275">
<caret line="42" column="8" selection-start-line="42" selection-start-column="8" selection-end-line="42" selection-end-column="8" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/view/mine/MyEmailController.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="9000">
<caret line="380" column="24" selection-start-line="380" selection-start-column="24" selection-end-line="380" selection-end-column="24" />
<state relative-caret-position="344">
<caret line="518" selection-start-line="517" selection-end-line="518" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#12524#14633#0" expanded="true" />
<element signature="e#14632#14633#0" expanded="true" />
<element signature="e#16114#18988#0" expanded="true" />
<element signature="e#18987#18988#0" expanded="true" />
<element signature="e#19260#19261#0" expanded="true" />
<element signature="e#19327#19328#0" expanded="true" />
<element signature="e#22979#22980#0" expanded="true" />
<element signature="e#23004#23005#0" expanded="true" />
<element signature="e#45500#45501#0" expanded="true" />
<element signature="e#45556#45557#0" expanded="true" />
<element signature="e#45995#45996#0" expanded="true" />
<element signature="e#46021#46022#0" expanded="true" />
</folding>
</state>
</provider>
@@ -281,14 +191,6 @@
</component>
<component name="FindInProjectRecents">
<findStrings>
<find>固定</find>
<find>验证</find>
<find>邮件</find>
<find>exit</find>
<find>SECOND_MINEPANE</find>
<find>NOTICEPANE</find>
<find>消息</find>
<find>GetNewN</find>
<find>初始化</find>
<find>详细信息</find>
<find>201</find>
@@ -311,6 +213,14 @@
<find>中文</find>
<find>executeOrder</find>
<find>utf-8</find>
<find></find>
<find>进度条并</find>
<find>isFile</find>
<find>判断</find>
<find>Pure</find>
<find>uploadFileDialogStage</find>
<find>下载</find>
<find>上传</find>
</findStrings>
</component>
<component name="Git.Settings">
@@ -755,7 +665,6 @@
<option value="$PROJECT_DIR$/src/main/java/cn/minoa/view/home/HomeListController.java" />
<option value="$PROJECT_DIR$/src/main/java/cn/minoa/view/mine/SingleEmailDetailsController.java" />
<option value="$PROJECT_DIR$/src/main/java/cn/minoa/util/Tool.java" />
<option value="$PROJECT_DIR$/src/main/java/cn/minoa/view/mine/MyCloudFileController.java" />
<option value="$PROJECT_DIR$/src/main/java/cn/minoa/view/home/DealSingleReimbursementController.java" />
<option value="$PROJECT_DIR$/src/main/java/cn/minoa/view/home/WrittenReimbursementController.java" />
<option value="$PROJECT_DIR$/src/main/java/cn/minoa/view/mine/WrittenEmailController.java" />
@@ -768,13 +677,14 @@
<option value="$PROJECT_DIR$/src/main/resources/fxml/login/SetttingOverview.fxml" />
<option value="$PROJECT_DIR$/src/main/resources/db/settings.properties" />
<option value="$PROJECT_DIR$/src/main/java/cn/minoa/view/login/RegisterOverviewController.java" />
<option value="$PROJECT_DIR$/src/main/java/cn/minoa/view/login/LoginOverviewController.java" />
<option value="$PROJECT_DIR$/src/main/java/cn/minoa/MainApp.java" />
<option value="$PROJECT_DIR$/ndn/settings.properties" />
<option value="$PROJECT_DIR$/src/main/java/cn/minoa/view/login/SettingOverviewController.java" />
<option value="$PROJECT_DIR$/build.gradle" />
<option value="$PROJECT_DIR$/src/main/java/cn/minoa/util/StringByteLengthUtil.java" />
<option value="$PROJECT_DIR$/src/main/java/cn/minoa/dataRequestInterface/MinoaDataAPI.java" />
<option value="$PROJECT_DIR$/src/main/java/cn/minoa/view/login/LoginOverviewController.java" />
<option value="$PROJECT_DIR$/src/main/java/cn/minoa/MainApp.java" />
<option value="$PROJECT_DIR$/src/main/java/cn/minoa/view/mine/MyCloudFileController.java" />
</list>
</option>
</component>
@@ -790,7 +700,7 @@
<select />
</treeState>
</component>
<component name="ProjectFrameBounds" extendedState="6">
<component name="ProjectFrameBounds" extendedState="7">
<option name="x" value="-514" />
<option name="y" value="77" />
<option name="width" value="1386" />
@@ -841,6 +751,8 @@
<foldersAlwaysOnTop value="true" />
</navigator>
<panes>
<pane id="Scope" />
<pane id="AndroidView" />
<pane id="ProjectPane">
<subPane>
<expand>
@@ -882,41 +794,36 @@
<item name="Demo_gradle_javafx11_01" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="main" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
<item name="java" type="462c0819:PsiDirectoryNode" />
<item name="minoa" type="462c0819:PsiDirectoryNode" />
<item name="resources" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="Demo_gradle_javafx11_01" type="b2602c69:ProjectViewProjectNode" />
<item name="Demo_gradle_javafx11_01" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="main" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
<item name="java" type="462c0819:PsiDirectoryNode" />
<item name="minoa" type="462c0819:PsiDirectoryNode" />
<item name="view" type="462c0819:PsiDirectoryNode" />
<item name="resources" type="462c0819:PsiDirectoryNode" />
<item name="fxml" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="Demo_gradle_javafx11_01" type="b2602c69:ProjectViewProjectNode" />
<item name="Demo_gradle_javafx11_01" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="main" type="8a07ba80:GradleTreeStructureProvider$GradleModuleDirectoryNode" />
<item name="java" type="462c0819:PsiDirectoryNode" />
<item name="minoa" type="462c0819:PsiDirectoryNode" />
<item name="view" type="462c0819:PsiDirectoryNode" />
<item name="login" type="462c0819:PsiDirectoryNode" />
<item name="resources" type="462c0819:PsiDirectoryNode" />
<item name="fxml" type="462c0819:PsiDirectoryNode" />
<item name="home" type="462c0819:PsiDirectoryNode" />
</path>
</expand>
<select />
</subPane>
</pane>
<pane id="PackagesPane" />
<pane id="AndroidView" />
<pane id="Scope" />
</panes>
</component>
<component name="PropertiesComponent">
<property name="SearchEverywhereHistoryKey" value="reformat&#9;ACTION&#9;ReformatCode&#10;file&#9;ACTION&#9;ChangeFileEncodingAction" />
<property name="WebServerToolWindowFactoryState" value="false" />
<property name="com.android.tools.idea.instantapp.provision.ProvisionBeforeRunTaskProvider.myTimeStamp" value="1584121594442" />
<property name="com.android.tools.idea.instantapp.provision.ProvisionBeforeRunTaskProvider.myTimeStamp" value="1584198153914" />
<property name="last_opened_file_path" value="$PROJECT_DIR$/lib/sqlite-jdbc-3.30.1.jar" />
<property name="nodejs_interpreter_path.stuck_in_default_project" value="undefined stuck path" />
<property name="nodejs_npm_path_reset_for_default_project" value="true" />
@@ -956,7 +863,7 @@
</list>
</option>
</component>
<component name="RunManager" selected="Gradle.Demo_gradle_javafx11_01 [jar]">
<component name="RunManager" selected="Application.Main">
<configuration name="Main" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
<option name="MAIN_CLASS_NAME" value="cn.minoa.Main" />
<module name="Demo_gradle_javafx11_01_main" />
@@ -983,6 +890,24 @@
<option name="Make" enabled="true" />
</method>
</configuration>
<configuration name="Demo_gradle_javafx11_01 [assemble]" type="GradleRunConfiguration" factoryName="Gradle" temporary="true">
<ExternalSystemSettings>
<option name="executionName" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="externalSystemIdString" value="GRADLE" />
<option name="scriptParameters" />
<option name="taskDescriptions">
<list />
</option>
<option name="taskNames">
<list>
<option value="assemble" />
</list>
</option>
<option name="vmOptions" />
</ExternalSystemSettings>
<method v="2" />
</configuration>
<configuration name="Demo_gradle_javafx11_01 [clean]" type="GradleRunConfiguration" factoryName="Gradle" temporary="true">
<ExternalSystemSettings>
<option name="executionName" />
@@ -1019,38 +944,20 @@
</ExternalSystemSettings>
<method v="2" />
</configuration>
<configuration name="Demo_gradle_javafx11_01 [testClasses]" type="GradleRunConfiguration" factoryName="Gradle" temporary="true">
<ExternalSystemSettings>
<option name="executionName" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="externalSystemIdString" value="GRADLE" />
<option name="scriptParameters" />
<option name="taskDescriptions">
<list />
</option>
<option name="taskNames">
<list>
<option value="testClasses" />
</list>
</option>
<option name="vmOptions" />
</ExternalSystemSettings>
<method v="2" />
</configuration>
<list>
<item itemvalue="Application.Main" />
<item itemvalue="Application.MainApp" />
<item itemvalue="Gradle.Demo_gradle_javafx11_01 [jar]" />
<item itemvalue="Gradle.Demo_gradle_javafx11_01 [testClasses]" />
<item itemvalue="Gradle.Demo_gradle_javafx11_01 [clean]" />
<item itemvalue="Gradle.Demo_gradle_javafx11_01 [assemble]" />
</list>
<recent_temporary>
<list>
<item itemvalue="Application.Main" />
<item itemvalue="Gradle.Demo_gradle_javafx11_01 [assemble]" />
<item itemvalue="Application.MainApp" />
<item itemvalue="Gradle.Demo_gradle_javafx11_01 [jar]" />
<item itemvalue="Gradle.Demo_gradle_javafx11_01 [clean]" />
<item itemvalue="Gradle.Demo_gradle_javafx11_01 [testClasses]" />
</list>
</recent_temporary>
</component>
@@ -1080,18 +987,18 @@
<workItem from="1584068582062" duration="25586000" />
<workItem from="1584097673927" duration="834000" />
<workItem from="1584098799418" duration="56000" />
<workItem from="1584099184067" duration="17052000" />
<workItem from="1584099184067" duration="17334000" />
<workItem from="1584165733316" duration="26235000" />
</task>
<servers />
</component>
<component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="186280000" />
<option name="totallyTimeSpent" value="212797000" />
</component>
<component name="ToolWindowManager">
<frame x="-8" y="-8" width="1382" height="744" extended-state="6" />
<editor active="true" />
<layout>
<window_info active="true" content_ui="combo" id="Project" order="0" sideWeight="0.4977029" visible="true" weight="0.20801815" />
<window_info active="true" content_ui="combo" id="Project" order="0" sideWeight="0.4977029" visible="true" weight="0.3494705" />
<window_info id="Structure" order="1" sideWeight="0.5022971" side_tool="true" weight="0.30542988" />
<window_info id="Designer" order="2" />
<window_info id="Image Layers" order="3" />
@@ -1100,7 +1007,7 @@
<window_info id="Capture Tool" order="6" />
<window_info anchor="bottom" id="Message" order="0" />
<window_info anchor="bottom" id="Find" order="1" weight="0.32874617" />
<window_info anchor="bottom" id="Run" order="2" visible="true" weight="0.30377668" />
<window_info anchor="bottom" id="Run" order="2" visible="true" weight="0.27093595" />
<window_info anchor="bottom" id="Debug" order="3" weight="0.39901477" />
<window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
<window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
@@ -1117,7 +1024,7 @@
<window_info anchor="right" id="Palette" order="3" />
<window_info anchor="right" id="Capture Analysis" order="4" />
<window_info anchor="right" id="Maven Projects" order="5" weight="0.3295626" />
<window_info anchor="right" id="Gradle" order="6" visible="true" weight="0.15960665" />
<window_info anchor="right" id="Gradle" order="6" visible="true" weight="0.15885022" />
<window_info anchor="right" id="Database" order="7" weight="0.18683812" />
<window_info anchor="right" id="Palette&#9;" order="8" />
<window_info anchor="right" id="Theme Preview" order="9" />
@@ -1166,14 +1073,6 @@
<option name="FILTER_TARGETS" value="false" />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/src/main/resources/fxml/NavigationBarOverview.fxml">
<provider editor-type-id="JavaFX-Scene-Builder" />
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="75">
<caret line="29" column="42" lean-forward="true" selection-start-line="29" selection-start-column="42" selection-end-line="29" selection-end-column="42" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/view/message/MessageListController.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="475">
@@ -1329,13 +1228,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/dataRequestInterface/DataCacheQueue.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="309">
<caret line="30" column="9" selection-start-line="30" selection-start-column="9" selection-end-line="30" selection-end-column="9" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/model/SingleMessage.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="75">
@@ -1409,54 +1301,10 @@
</state>
</provider>
</entry>
<entry file="jar://C:/Program Files/Java/jdk-11.0.5/lib/src.zip!/java.base/java/io/File.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="130">
<caret line="554" column="18" selection-start-line="554" selection-start-column="18" selection-end-line="554" selection-end-column="18" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/view/mine/NewFolderDialogController.java">
<provider selected="true" editor-type-id="text-editor">
<state>
<caret lean-forward="true" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/resources/images/setting_gear.png">
<provider selected="true" editor-type-id="images" />
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/view/mine/MyCloudFileController.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="225">
<caret line="37" lean-forward="true" selection-start-line="37" selection-end-line="37" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/view/mine/MyEmailController.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="9000">
<caret line="380" column="24" selection-start-line="380" selection-start-column="24" selection-end-line="380" selection-end-column="24" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/out/production/resources/db/settings.properties">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="75">
<caret line="3" column="35" selection-start-line="3" selection-start-column="35" selection-end-line="3" selection-end-column="35" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/view/login/RegisterOverviewController.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="275">
<caret line="42" column="8" selection-start-line="42" selection-start-column="8" selection-end-line="42" selection-end-column="8" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/out/production/resources/db/settings.properties" />
<entry file="file://$PROJECT_DIR$/ndn/settings.properties">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="125">
@@ -1464,13 +1312,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/dataRequestInterface/creatNDNKey.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="25">
<caret line="9" column="29" selection-start-line="9" selection-start-column="29" selection-end-line="9" selection-end-column="29" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/view/login/SettingOverviewController.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="263">
@@ -1485,6 +1326,30 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/view/login/RegisterOverviewController.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="750">
<caret line="42" column="8" selection-start-line="42" selection-start-column="8" selection-end-line="42" selection-end-column="8" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/view/mine/MyEmailController.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="9000">
<caret line="380" column="24" selection-start-line="380" selection-start-column="24" selection-end-line="380" selection-end-column="24" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/dataRequestInterface/creatNDNKey.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="25">
<caret line="9" column="29" selection-start-line="9" selection-start-column="29" selection-end-line="9" selection-end-column="29" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/build.gradle">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="125">
@@ -1499,10 +1364,35 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/MainApp.java">
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/view/mine/NewFolderDialogController.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="193">
<caret line="131" column="24" selection-start-line="131" selection-start-column="24" selection-end-line="131" selection-end-column="24" />
<state relative-caret-position="150">
<caret line="9" column="4" lean-forward="true" selection-start-line="9" selection-start-column="4" selection-end-line="9" selection-end-column="4" />
</state>
</provider>
</entry>
<entry file="jar://C:/Program Files/Java/jdk-11.0.5/lib/src.zip!/java.base/java/io/File.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="130">
<caret line="554" column="18" selection-start-line="554" selection-start-column="18" selection-end-line="554" selection-end-column="18" />
<folding>
<element signature="e#22927#22928#0" expanded="true" />
<element signature="e#22966#22967#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.openjfx/javafx-graphics/11.0.2/15eadef01f327a851a6d3af0ac89d56292076b13/javafx-graphics-11.0.2-sources.jar!/javafx/concurrent/Task.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="135">
<caret line="1424" selection-start-line="1424" selection-end-line="1424" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/view/login/LoginOverviewController.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="116">
<caret line="336" column="10" selection-start-line="336" selection-start-column="10" selection-end-line="336" selection-end-column="10" />
<folding>
<element signature="imports" expanded="true" />
</folding>
@@ -1511,20 +1401,54 @@
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/dataRequestInterface/MinoaDataAPI.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="168">
<caret line="573" column="84" selection-start-line="573" selection-start-column="84" selection-end-line="573" selection-end-column="84" />
<state relative-caret-position="88">
<caret line="107" column="40" lean-forward="true" selection-start-line="107" selection-start-column="40" selection-end-line="107" selection-end-column="40" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/view/login/LoginOverviewController.java">
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/dataRequestInterface/DataCacheQueue.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="293">
<caret line="396" column="34" lean-forward="true" selection-start-line="396" selection-start-column="34" selection-end-line="396" selection-end-column="34" />
<state relative-caret-position="246">
<caret line="40" column="4" lean-forward="true" selection-start-line="40" selection-start-column="4" selection-end-line="40" selection-end-column="4" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/view/mine/MyCloudFileController.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="25">
<caret line="156" column="66" lean-forward="true" selection-start-line="156" selection-start-column="66" selection-end-line="156" selection-end-column="66" />
<folding>
<element signature="e#21250#21251#0" expanded="true" />
<element signature="e#21318#21319#0" expanded="true" />
<element signature="e#21397#21398#0" expanded="true" />
<element signature="e#21451#21452#0" expanded="true" />
<element signature="e#21531#21532#0" expanded="true" />
<element signature="e#21585#21586#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/cn/minoa/MainApp.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="344">
<caret line="518" selection-start-line="517" selection-end-line="518" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#12524#14633#0" expanded="true" />
<element signature="e#14632#14633#0" expanded="true" />
<element signature="e#16114#18988#0" expanded="true" />
<element signature="e#18987#18988#0" expanded="true" />
<element signature="e#19260#19261#0" expanded="true" />
<element signature="e#19327#19328#0" expanded="true" />
<element signature="e#22979#22980#0" expanded="true" />
<element signature="e#23004#23005#0" expanded="true" />
<element signature="e#45500#45501#0" expanded="true" />
<element signature="e#45556#45557#0" expanded="true" />
<element signature="e#45995#45996#0" expanded="true" />
<element signature="e#46021#46022#0" expanded="true" />
</folding>
</state>
</provider>
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
+2 -2
View File
@@ -1,5 +1,5 @@
#\u4FEE\u6539\u914D\u7F6E\u6587\u4EF6
#Fri Mar 13 23:23:50 CST 2020
ServerIPAddress=121.15.171.88
#Sat Mar 14 22:37:55 CST 2020
ServerIPAddress=121.15.171.89
DataPackagePrefix=/ndn/edu/pkusz/OA
ServerPortAddress=6363
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -30,7 +30,7 @@
<Button mnemonicParsing="false" onAction="#showReimDealView" opacity="0.3" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
</children>
</AnchorPane>
<AnchorPane layoutX="30.0" layoutY="30.0" prefHeight="50.0" prefWidth="225.0" AnchorPane.leftAnchor="10.0" AnchorPane.topAnchor="130.0">
<AnchorPane layoutX="30.0" layoutY="30.0" prefHeight="50.0" prefWidth="225.0" visible="false" AnchorPane.leftAnchor="10.0" AnchorPane.topAnchor="130.0">
<children>
<HBox spacing="10.0" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="7.0">
<children>
@@ -41,7 +41,7 @@
<Button mnemonicParsing="false" opacity="0.3" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
</children>
</AnchorPane>
<AnchorPane layoutX="20.0" layoutY="20.0" prefHeight="50.0" prefWidth="225.0" AnchorPane.leftAnchor="10.0" AnchorPane.topAnchor="180.0">
<AnchorPane layoutX="20.0" layoutY="20.0" prefHeight="50.0" prefWidth="225.0" visible="false" AnchorPane.leftAnchor="10.0" AnchorPane.topAnchor="180.0">
<children>
<HBox spacing="10.0" AnchorPane.leftAnchor="30.0">
<children>
@@ -52,7 +52,7 @@
<Button mnemonicParsing="false" opacity="0.3" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
</children>
</AnchorPane>
<AnchorPane layoutX="10.0" layoutY="10.0" prefHeight="50.0" prefWidth="225.0" AnchorPane.leftAnchor="10.0" AnchorPane.topAnchor="230.0">
<AnchorPane layoutX="10.0" layoutY="10.0" prefHeight="50.0" prefWidth="225.0" visible="false" AnchorPane.leftAnchor="10.0" AnchorPane.topAnchor="230.0">
<children>
<HBox spacing="10.0" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="7.0">
<children>
+306 -1
View File
@@ -4,6 +4,8 @@ import java.io.*;
import java.util.*;
import cn.minoa.dataRequestInterface.MinoaDataAPI;
import cn.minoa.dataRequestInterface.OrderInfo;
import cn.minoa.dataRequestInterface.ResponseData;
import cn.minoa.model.*;
import cn.minoa.util.StringByteLengthUtil;
import cn.minoa.view.NavigationBarController;
@@ -25,18 +27,32 @@ import cn.minoa.view.mine.WrittenEmailController;
import cn.minoa.view.mine.WrittenNoticeController;
import javafx.application.Application;
import javafx.application.Platform;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.concurrent.Task;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.fxml.FXMLLoader;
import javafx.geometry.Pos;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.ProgressBar;
import javafx.scene.image.Image;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.paint.Color;
import javafx.stage.Modality;
import javafx.stage.Stage;
import javafx.stage.StageStyle;
import javafx.stage.WindowEvent;
import org.json.JSONException;
import org.json.JSONObject;
public class MainApp extends Application {
@@ -116,6 +132,15 @@ public class MainApp extends Application {
// 用户头像的默认保存位置
public final String userHeadPhotoBinPath;
// 进度条更新任务[传入子线程]
Task copyWorker;
// 标记是否是手动取消了上传或下载操作【false表示未取消,true表示取消】
public boolean isCancelFileTransferFlag;
// 上传文件进度条stage
private Stage uploadFileDialogStage;
// 下载文件进度条stage
private Stage downloadFileDialogStage;
public MainApp() {
// 加载配置文件
loadSettingProperties();
@@ -135,6 +160,7 @@ public class MainApp extends Application {
userHeadPhotoBinPath = getClientPath() + "\\resources\\images\\headPhotos\\";
// System.out.println(userHeadPhotoBinPath);
sliceSize = 7000;
isCancelFileTransferFlag=false;
// 初始化记录当前显示的面板的字符串
// 固定字符串
@@ -260,18 +286,297 @@ public class MainApp extends Application {
return loginerController.downloadFileToSpecifiedDir(pathfileName, localDir);
}
// 显示进度条并下载文件到指定目录下
public void downloadFileByPathfilenameWithProgressBar(String pathfileName, String localDir){
isCancelFileTransferFlag=false;
// 创建进度条子Stage
downloadFileDialogStage = new Stage();
downloadFileDialogStage.setTitle("minoaClientWindows-文件传输");
downloadFileDialogStage.getIcons().add(new Image("file:resources/images/logo_mini.png"));
downloadFileDialogStage.initStyle(StageStyle.TRANSPARENT);
downloadFileDialogStage.initModality(Modality.WINDOW_MODAL);
downloadFileDialogStage.initOwner(primaryStage);
Group root = new Group();
Scene scene = new Scene(root, 330, 120, Color.WHITE);
downloadFileDialogStage.setScene(scene);
BorderPane mainPane = new BorderPane();
mainPane.setPrefHeight(100);
mainPane.setPrefWidth(325);
root.getChildren().add(mainPane);
final Label label = new Label("文件传输进度:");
final ProgressBar progressBar = new ProgressBar(0);
final HBox hb = new HBox();
hb.setSpacing(20);
hb.setAlignment(Pos.CENTER);
hb.getChildren().addAll(label, progressBar);
mainPane.setCenter(hb);
final Button startButton = new Button("开始传输");
final Button cancelButton = new Button("取消传输");
final HBox hb2 = new HBox();
hb2.setSpacing(20);
hb2.setAlignment(Pos.CENTER);
// hb2.getChildren().addAll(startButton);
hb2.getChildren().addAll(startButton, cancelButton);
mainPane.setBottom(hb2);
startButton.setOnAction(new EventHandler<ActionEvent>() {
public void handle(ActionEvent event) {
startButton.setDisable(true);
progressBar.setProgress(0);
cancelButton.setDisable(true);
cancelButton.setText("确认完成");
copyWorker = createDownWorker(pathfileName, localDir,cancelButton);
progressBar.progressProperty().unbind();
progressBar.progressProperty().bind(copyWorker.progressProperty());
copyWorker.messageProperty().addListener(new ChangeListener<String>() {
public void changed(ObservableValue<? extends String> observable,
String oldValue, String newValue) {
System.out.println(newValue);
}
});
new Thread(copyWorker).start();
}
});
cancelButton.setOnAction(new EventHandler<ActionEvent>() {
public void handle(ActionEvent event) {
if(cancelButton.getText().equals("确认完成")){
}else{
isCancelFileTransferFlag=true;
}
downloadFileDialogStage.close();
// startButton.setDisable(false);
// cancelButton.setDisable(true);
// copyWorker.cancel(true);
// progressBar.progressProperty().unbind();
// progressBar.setProgress(0);
// System.out.println("传输已终止。");
}
});
// 打开文件传输Stage
downloadFileDialogStage.showAndWait();
}
// 文件数据下载TASK
public Task createDownWorker(String filename, String localDir,Button button) {
return new Task() {
@Override
protected Object call() throws Exception {
// 下载到本地的文件名称
String localName = loginerController.getPureFileName(filename);
// 发送数据请求
Long seqLong = getNewDataReqId();
OrderInfo orderInfo=new OrderInfo();
orderInfo.setSeq(seqLong);
orderInfo.setJsonString(loginerController.getFileInfoJson(filename));
minoaDataAPI.executeOrder("/fileInfo", orderInfo);
// 获取文件信息
ResponseData responseData = minoaDataAPI.dataCacheQueue.getResponseDataBySeq(seqLong);
JSONObject jsonObject = responseData.praseRequestData();
System.out.println("fileInfo-JSON: " + jsonObject.toString());
Integer codeInteger = null;
try {
codeInteger = jsonObject.getInt("code");
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (codeInteger == 200) {
String dataString;
try {
dataString = jsonObject.getString("data");
JSONObject dataJsonObject = new JSONObject(dataString);
Integer sliceNumInteger;
sliceNumInteger = dataJsonObject.getInt("sliceNum");
// 根据分片信息获取每个分片,并合并成一个完整比特流
Integer flagSuccessInteger=0;
Integer flagInteger = 0;
for (int i = 0; i < sliceNumInteger; i++) {
flagInteger = loginerController.downLoadFileBySlice(filename, i, localDir, localName);
if(flagInteger==0){
flagSuccessInteger++;
System.out.println("数据分片"+i+"传输成功. ");
// updateMessage("");
updateProgress(flagSuccessInteger, sliceNumInteger);
}else{
flagSuccessInteger++;
System.out.println("数据分片"+i+"传输失败. ");
// updateMessage("");
updateProgress(flagSuccessInteger, sliceNumInteger);
}
}
if(flagSuccessInteger==sliceNumInteger){
System.out.println("文件数据已成功全部写入本地");
}else{
System.out.println("由于未知原因,文件数据全部或部分未成功写入本地");
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//设置确认按钮
button.setDisable(false);
return true;
}
};
}
// 上传本地文件到指定的服务器目录下
public Integer uploadFileToServerPath(File file, String serverpath) {
Integer r=loginerController.sendFileToServer(file, serverpath);
return r;
}
// 上传本地文件到服务器的共享文件夹下
// 显示进度条并上传文件到指定目录
public void uploadFileToServerPathWithProgressBar(File file, String serverpath){
isCancelFileTransferFlag=false;
// 创建进度条子Stage
uploadFileDialogStage = new Stage();
uploadFileDialogStage.setTitle("minoaClientWindows-文件传输");
uploadFileDialogStage.getIcons().add(new Image("file:resources/images/logo_mini.png"));
uploadFileDialogStage.initStyle(StageStyle.TRANSPARENT);
uploadFileDialogStage.initModality(Modality.WINDOW_MODAL);
uploadFileDialogStage.initOwner(primaryStage);
Group root = new Group();
Scene scene = new Scene(root, 330, 120, Color.WHITE);
uploadFileDialogStage.setScene(scene);
BorderPane mainPane = new BorderPane();
mainPane.setPrefHeight(100);
mainPane.setPrefWidth(325);
root.getChildren().add(mainPane);
final Label label = new Label("文件传输进度:");
final ProgressBar progressBar = new ProgressBar(0);
final HBox hb = new HBox();
hb.setSpacing(20);
hb.setAlignment(Pos.CENTER);
hb.getChildren().addAll(label, progressBar);
mainPane.setCenter(hb);
final Button startButton = new Button("开始传输");
final Button cancelButton = new Button("取消传输");
final HBox hb2 = new HBox();
hb2.setSpacing(20);
hb2.setAlignment(Pos.CENTER);
// hb2.getChildren().addAll(startButton);
hb2.getChildren().addAll(startButton, cancelButton);
mainPane.setBottom(hb2);
startButton.setOnAction(new EventHandler<ActionEvent>() {
public void handle(ActionEvent event) {
startButton.setDisable(true);
progressBar.setProgress(0);
cancelButton.setDisable(true);
cancelButton.setText("确认完成");
copyWorker = createWorker(file, serverpath,cancelButton);
progressBar.progressProperty().unbind();
progressBar.progressProperty().bind(copyWorker.progressProperty());
copyWorker.messageProperty().addListener(new ChangeListener<String>() {
public void changed(ObservableValue<? extends String> observable,
String oldValue, String newValue) {
System.out.println(newValue);
}
});
new Thread(copyWorker).start();
}
});
cancelButton.setOnAction(new EventHandler<ActionEvent>() {
public void handle(ActionEvent event) {
if(cancelButton.getText().equals("确认完成")){
}else{
isCancelFileTransferFlag=true;
}
uploadFileDialogStage.close();
// startButton.setDisable(false);
// cancelButton.setDisable(true);
// copyWorker.cancel(true);
// progressBar.progressProperty().unbind();
// progressBar.setProgress(0);
// System.out.println("传输已终止。");
}
});
// 打开文件传输Stage
uploadFileDialogStage.showAndWait();
}
// 文件数据上传TASK
public Task createWorker(File file, String serverpath,Button button) {
return new Task() {
@Override
protected Object call() throws Exception {
//获取要上传文件的文件长度,计算上传次数
long filelen = file.length();
int cycle = (int) filelen / sliceSize;
int remainder=(int)filelen%sliceSize;
if((cycle>0)&&(remainder==0)) {
cycle--;
}
System.out.println("file-len: " + filelen);
System.out.println("cycle: " + cycle);
//发送上传命令给上传接口,接口自行取本地数据
int flagSuccess = 0; //记录收到200回复的次数
for (int i = 0; i <= cycle; i++) {
OrderInfo orderInfo = new OrderInfo();
ResponseData responseData = new ResponseData();
Long seqLong = getNewDataReqId();
orderInfo.setSeq(seqLong);
//此时传入的文件路径是windows下的绝对路径
orderInfo.setJsonString(loginerController.getUploadFile(file.getAbsolutePath(), i * sliceSize));
minoaDataAPI.executeOrder("/uploadFile", orderInfo, serverpath);
responseData = minoaDataAPI.dataCacheQueue.getResponseDataBySeq(seqLong);
// System.out.println("上传文件的数据回执(200表示成功)"+responseData.getResponseJsonDataString());
JSONObject jsonObject = responseData.praseRequestData();
responseData.printSelf();
// 解析数据
Integer codeInteger = null;
try {
codeInteger = jsonObject.getInt("code");
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (codeInteger == 200) {
flagSuccess++;
System.out.println("数据分片"+i+"传输结果[200表示成功]: "+codeInteger);
// updateMessage("");
updateProgress(i + 1, cycle+1);
}else{
System.out.println("数据分片"+i+"传输结果[200表示成功]: "+codeInteger);
// updateMessage("");
updateProgress(i + 1, cycle+1);
}
}
//每个分片都上传成功
if (flagSuccess == (cycle + 1)) {
System.out.println("已成功将文件" + file.getAbsolutePath() + "上传至服务器" + serverpath + "目录下。");
} else {
System.out.println("由于未知原因,本地文件" + file.getAbsolutePath() + "上传服务器失败。");
}
//设置确认按钮
button.setDisable(false);
// System.out.println("文件上传线程:我干完活儿啦");
return true;
}
};
}
// 上传本地文件到服务器的共享文件夹下
public Integer uploadFileToServerSharedFolder(File file) {
Integer res=loginerController.sendFileToServer(file, this.sharedFileServerPath);
return res;
}
//请求服务器某文件的字节长度
public Integer getServerFileByteLength(String filename){
return loginerController.getServerFileLength(filename);
}
//201大数据接口:取数据片
public String getGetDataSlice201(String dataId,Integer sliceNo){
return loginerController.getGetDataSlice(dataId,sliceNo);
@@ -155,6 +155,41 @@ public class LoginOverviewController {
System.out.println("Created Thread to Bind News.");
}
// 请求服务器某文件的大小:返回-1表示没有该文件或登录失效
public Integer getServerFileLength(String filename) {
// 发送数据请求
Long seqLong = mainApp.getNewDataReqId();
orderInfo.setSeq(seqLong);
orderInfo.setJsonString(getFileInfoJson(filename));
mainApp.minoaDataAPI.executeOrder("/fileInfo", orderInfo);
// 获取头像信息
ResponseData responseData = mainApp.minoaDataAPI.dataCacheQueue.getResponseDataBySeq(seqLong);
JSONObject jsonObject = responseData.praseRequestData();
System.out.println("getServerFileLength-fileInfo-JSON: " + jsonObject.toString());
responseData.printSelf();
Integer codeInteger = null;
try {
codeInteger = jsonObject.getInt("code");
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (codeInteger == 200) {
String dataString;
try {
dataString = jsonObject.getString("data");
JSONObject dataJsonObject = new JSONObject(dataString);
Integer fileSize= dataJsonObject.getInt("fileSize");
return fileSize;
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return -1;
}
}
return -1;
}
// 下载文件[返回0:已经成功接收所有回执数据并写入本地文件]
public Integer downloadFile(String filename) {
// 发送数据请求
@@ -299,7 +334,7 @@ public class LoginOverviewController {
}
// 请求文件分片数据=>返回0表示分片数据被成功下载
private Integer downLoadFileBySlice(String filename, Integer sliceNo, String localDir, String localName) {
public Integer downLoadFileBySlice(String filename, Integer sliceNo, String localDir, String localName) {
Integer flagInteger;
// 发送数据请求
Long seqLong = mainApp.getNewDataReqId();
@@ -387,7 +422,7 @@ public class LoginOverviewController {
}
// 获取要下载的文件信息
private String getFileInfoJson(String filename) {
public String getFileInfoJson(String filename) {
JSONObject jsonObject = new JSONObject();
String commandString = "/fileInfo";
String usernameString = mainApp.loginer.getUserName();
@@ -1066,7 +1101,7 @@ public class LoginOverviewController {
// }
//获取上传文件的json格式
private String getUploadFile(String filename, Integer offset) {
public String getUploadFile(String filename, Integer offset) {
JSONObject jsonObject = new JSONObject();
String commandString = "/uploadFile";
String usernameString = mainApp.loginer.getUserName();
@@ -1098,6 +1133,10 @@ public class LoginOverviewController {
//获取要上传文件的文件长度,计算上传次数
long filelen = file.length();
int cycle = (int) filelen / mainApp.sliceSize;
int remainder=(int)filelen%mainApp.sliceSize;
if((cycle>0)&&(remainder==0)) {
cycle--;
}
System.out.println("file-len: " + filelen);
System.out.println("cycle: " + cycle);
//发送上传命令给上传接口,接口自行取本地数据
@@ -164,23 +164,51 @@ public class MyCloudFileController {
alert.showAndWait();
return ;
}
System.out.println("正在上传文件... :" + file.getAbsolutePath());
// sendFileToServer(file);
Integer r=mainApp.uploadFileToServerPath(file, currentPath + "/");
if(r==0){
// 弹窗参考:https://code.makery.ch/blog/javafx-dialogs-official/
Alert alert = new Alert(AlertType.INFORMATION);
alert.setTitle("文件上传成功");
alert.setHeaderText("文件上传成功");
alert.setContentText("你的文件已经上传至服务器。");
alert.showAndWait();
System.out.println("开始文件上传... :" + file.getAbsolutePath());
// 版1【默认根目录】:
// sendFileToServer(file);
// 版2【无进度条】:
// Integer r=mainApp.uploadFileToServerPath(file, currentPath + "/");
// 版3【有进度条】:
mainApp.uploadFileToServerPathWithProgressBar(file, currentPath + "/");
// 判断是否手动取消了上传,是的话就不进行下面的判断
if(mainApp.isCancelFileTransferFlag){
return;
}
// 上传文件之后,通过获取上传到服务器的文件大小,与本地文件大小对比
// 判断是否传输成功
String serverPathname;
if(currentPath.equals("/")){
serverPathname=currentPath+file.getName();
}else{
serverPathname=currentPath+"/"+file.getName();
}
Integer fileServerLength=mainApp.getServerFileByteLength(serverPathname);
System.out.println("fileServerLength: "+fileServerLength);
if(fileServerLength<0){
//文件未成功创建
// 弹窗参考:https://code.makery.ch/blog/javafx-dialogs-official/
Alert alert = new Alert(AlertType.WARNING);
alert.setTitle("文件上传失败");
alert.setHeaderText("文件上传失败");
alert.setContentText("由于未知原因,你的文件上传失败。");
alert.showAndWait();
}else if(fileServerLength== file.length()){
//文件全部成功上传
// 弹窗参考:https://code.makery.ch/blog/javafx-dialogs-official/
Alert alert = new Alert(AlertType.INFORMATION);
alert.setTitle("文件上传成功");
alert.setHeaderText("文件上传成功");
alert.setContentText("你的文件已经成功上传至服务器。");
alert.showAndWait();
}else{
//文件部分数据未成功写入
// 弹窗参考:https://code.makery.ch/blog/javafx-dialogs-official/
Alert alert = new Alert(AlertType.WARNING);
alert.setTitle("文件上传失败");
alert.setHeaderText("文件上传失败");
alert.setContentText("由于未知原因,你的文件数据未全部上传成功。");
alert.showAndWait();
}
// 根据当前路径,重新加载整个界面,来刷新listview
try {
@@ -365,7 +393,7 @@ public class MyCloudFileController {
Stage selectFileStage = new Stage();
File file = directoryChooser.showDialog(selectFileStage);
if (file != null) {
// 文件不为空,且是文件夹
// 文件不为空,且是一个文件夹
if (file.isDirectory()) {
localDirString = file.getPath() + "\\";
System.out.println("选中的本地保存文件夹为:" + localDirString);
@@ -376,29 +404,87 @@ public class MyCloudFileController {
alert.setHeaderText("你的选中类型错误");
alert.setContentText("请确保你选中的是一个文件夹而不是一个文件。");
alert.showAndWait();
return;
}
}else{
return ;
}
Pane pane = fileList.getSelectionModel().getSelectedItem();
String pathfilename = getPathFileName(pane.getId());
System.out.println("开始下载... :" + pathfilename);
int flag = mainApp.downloadFileByPathfilename(pathfilename,localDirString);
if (flag == 0) {
mainApp.downloadFileByPathfilenameWithProgressBar(pathfilename,localDirString);
// 判断是否手动取消了下载,是的话就不进行下面的判断
if(mainApp.isCancelFileTransferFlag){
return;
}
// 下载文件之后,通过获取服务器的文件大小,与下载到本地的文件大小对比
// 判断是否传输成功
Integer fileServerLength=mainApp.getServerFileByteLength(pathfilename);
System.out.println("fileServerLength: "+fileServerLength);
String localfilename=localDirString+getPureFileNameFromLinux(pathfilename);
File localfile=new File(localfilename);
if(!localfile.exists()){
// 本地文件未被成功创建
// 弹窗参考:https://code.makery.ch/blog/javafx-dialogs-official/
Alert alert = new Alert(AlertType.ERROR);
alert.setTitle("下载失败");
alert.setHeaderText("下载文件失败");
alert.setContentText("本地文件未被成功创建,请检查是否有权限访问你选择的文件存储位置。" + "您的指定的文件保存位置为:" +localDirString);
alert.showAndWait();
}else if(localfile.length()==fileServerLength){
// 本地文件成功创建且字节长度与服务器一致
// 弹窗参考:https://code.makery.ch/blog/javafx-dialogs-official/
Alert alert = new Alert(AlertType.INFORMATION);
alert.setTitle("下载成功");
alert.setHeaderText("下载文件成功");
alert.setContentText("您请求的文件数据已经被全部下载到本地," + "如有发现打开异常或数据内容并非所求,说明出现了服务器数据请求问题。" + "您的文件保存位置为:"
alert.setContentText("您请求的文件数据已经被全部下载到本地," + "您的文件保存位置为:"
+ localDirString);
alert.showAndWait();
} else {
// 弹窗参考:https://code.makery.ch/blog/javafx-dialogs-official/
}else{
// 本地文件成功创建但字节长度与服务器不一致
// 弹窗参考:https://code.makery.ch/blog/javafx-dialogs-official/
Alert alert = new Alert(AlertType.ERROR);
alert.setTitle("下载失败");
alert.setHeaderText("下载文件失败");
alert.setContentText("本地文件数据写入失败,请检查是否有权限访问文件存储位置" + "您的文件保存位置为:" +localDirString);
alert.setContentText("文件数据未能全部写入本地" + "您的文件保存位置为:" +localDirString);
alert.showAndWait();
}
// int flag = mainApp.downloadFileByPathfilename(pathfilename,localDirString);
// if (flag == 0) {
//// 弹窗参考:https://code.makery.ch/blog/javafx-dialogs-official/
// Alert alert = new Alert(AlertType.INFORMATION);
// alert.setTitle("下载成功");
// alert.setHeaderText("下载文件成功");
// alert.setContentText("您请求的文件数据已经被全部下载到本地," + "如有发现打开异常或数据内容并非所求,说明出现了服务器数据请求问题。" + "您的文件保存位置为:"
// + localDirString);
// alert.showAndWait();
// } else {
//// 弹窗参考:https://code.makery.ch/blog/javafx-dialogs-official/
// Alert alert = new Alert(AlertType.ERROR);
// alert.setTitle("下载失败");
// alert.setHeaderText("下载文件失败");
// alert.setContentText("本地文件数据写入失败,请检查是否有权限访问文件存储位置。" + "您的文件保存位置为:" +localDirString);
// alert.showAndWait();
// }
}
// 根据包含路径的文件名获取纯文件名[linux下]
public String getPureFileNameFromLinux(String pathfilename) {
// 标记最后一个/的下标
int indexLeft = -1;
for (int i = 0; i < pathfilename.length(); i++) {
if (pathfilename.charAt(i) == '/') {
indexLeft = i;
}
}
if (indexLeft == -1) {
System.out.println("pure name[linux]: " + pathfilename);
return pathfilename;
} else {
System.out.println("pure name[linux]: " + pathfilename.substring(indexLeft + 1, pathfilename.length()));
return pathfilename.substring(indexLeft + 1, pathfilename.length());
}
}
// 根据当前目录字符串获取上一层目录
@@ -514,64 +600,64 @@ public class MyCloudFileController {
return jsonObject.toString();
}
// 上传文件操作=》目前只支持上传指定文件到用户根目录
public void sendFileToServer(File file) {
// 获取要上传文件的文件长度,计算上传次数
long filelen = file.length();
int cycle = (int) filelen / mainApp.sliceSize;
System.out.println("file-len: " + filelen);
System.out.println("cycle: " + cycle);
// 发送上传命令给上传接口,接口自行取本地数据
int flagSuccess = 0; // 记录收到200回复的次数
for (int i = 0; i <= cycle; i++) {
OrderInfo orderInfo = new OrderInfo();
ResponseData responseData = new ResponseData();
Long seqLong = mainApp.getNewDataReqId();
orderInfo.setSeq(seqLong);
// 此时传入的文件路径是windows下的绝对路径
orderInfo.setJsonString(getUploadFile(file.getAbsolutePath(), i * mainApp.sliceSize));
mainApp.minoaDataAPI.executeOrder("/uploadFile", orderInfo);
responseData = mainApp.minoaDataAPI.dataCacheQueue.getResponseDataBySeq(seqLong);
// System.out.println("上传文件的数据回执(200表示成功)"+responseData.getResponseJsonDataString());
JSONObject jsonObject = responseData.praseRequestData();
responseData.printSelf();
// 解析数据
Integer codeInteger = null;
try {
codeInteger = jsonObject.getInt("code");
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (codeInteger == 200) {
flagSuccess++;
}
}
// 每个分片都上传成功
if (flagSuccess == (cycle + 1)) {
// 弹窗参考:https://code.makery.ch/blog/javafx-dialogs-official/
Alert alert = new Alert(AlertType.INFORMATION);
alert.setTitle("上传成功");
alert.setHeaderText("上传文件成功");
alert.setContentText("您的文件已上传。");
alert.showAndWait();
// 根据当前路径,重新加载整个界面,来刷新listview
try {
mainApp.reloadCloudFileOverview(currentPath);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else {
// 弹窗参考:https://code.makery.ch/blog/javafx-dialogs-official/
Alert alert = new Alert(AlertType.WARNING);
alert.setTitle("上传失败");
alert.setHeaderText("上传文件失败");
alert.setContentText("由于未知原因,您的文件上传失败,非常抱歉。");
alert.showAndWait();
}
}
// //上传文件操作=>此函数只支持上传指定文件到用户根目录
// public void sendFileToServer(File file) {
// // 获取要上传文件的文件长度,计算上传次数
// long filelen = file.length();
// int cycle = (int) filelen / mainApp.sliceSize;
// System.out.println("file-len: " + filelen);
// System.out.println("cycle: " + cycle);
// // 发送上传命令给上传接口,接口自行取本地数据
// int flagSuccess = 0; // 记录收到200回复的次数
// for (int i = 0; i <= cycle; i++) {
// OrderInfo orderInfo = new OrderInfo();
// ResponseData responseData = new ResponseData();
// Long seqLong = mainApp.getNewDataReqId();
// orderInfo.setSeq(seqLong);
// // 此时传入的文件路径是windows下的绝对路径
// orderInfo.setJsonString(getUploadFile(file.getAbsolutePath(), i * mainApp.sliceSize));
//
// mainApp.minoaDataAPI.executeOrder("/uploadFile", orderInfo);
// responseData = mainApp.minoaDataAPI.dataCacheQueue.getResponseDataBySeq(seqLong);
//// System.out.println("上传文件的数据回执(200表示成功)"+responseData.getResponseJsonDataString());
// JSONObject jsonObject = responseData.praseRequestData();
// responseData.printSelf();
// // 解析数据
// Integer codeInteger = null;
// try {
// codeInteger = jsonObject.getInt("code");
// } catch (JSONException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// if (codeInteger == 200) {
// flagSuccess++;
// }
// }
// // 每个分片都上传成功
// if (flagSuccess == (cycle + 1)) {
//// 弹窗参考:https://code.makery.ch/blog/javafx-dialogs-official/
// Alert alert = new Alert(AlertType.INFORMATION);
// alert.setTitle("上传成功");
// alert.setHeaderText("上传文件成功");
// alert.setContentText("您的文件已上传。");
// alert.showAndWait();
// // 根据当前路径,重新加载整个界面,来刷新listview
// try {
// mainApp.reloadCloudFileOverview(currentPath);
// } catch (IOException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// } else {
//// 弹窗参考:https://code.makery.ch/blog/javafx-dialogs-official/
// Alert alert = new Alert(AlertType.WARNING);
// alert.setTitle("上传失败");
// alert.setHeaderText("上传文件失败");
// alert.setContentText("由于未知原因,您的文件上传失败,非常抱歉。");
// alert.showAndWait();
// }
// }
// 从paneId中获取文件所在路径
public String getPathFromPaneId(String paneId) {
@@ -30,7 +30,7 @@
<Button mnemonicParsing="false" onAction="#showReimDealView" opacity="0.3" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
</children>
</AnchorPane>
<AnchorPane layoutX="30.0" layoutY="30.0" prefHeight="50.0" prefWidth="225.0" AnchorPane.leftAnchor="10.0" AnchorPane.topAnchor="130.0">
<AnchorPane layoutX="30.0" layoutY="30.0" prefHeight="50.0" prefWidth="225.0" visible="false" AnchorPane.leftAnchor="10.0" AnchorPane.topAnchor="130.0">
<children>
<HBox spacing="10.0" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="7.0">
<children>
@@ -41,7 +41,7 @@
<Button mnemonicParsing="false" opacity="0.3" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
</children>
</AnchorPane>
<AnchorPane layoutX="20.0" layoutY="20.0" prefHeight="50.0" prefWidth="225.0" AnchorPane.leftAnchor="10.0" AnchorPane.topAnchor="180.0">
<AnchorPane layoutX="20.0" layoutY="20.0" prefHeight="50.0" prefWidth="225.0" visible="false" AnchorPane.leftAnchor="10.0" AnchorPane.topAnchor="180.0">
<children>
<HBox spacing="10.0" AnchorPane.leftAnchor="30.0">
<children>
@@ -52,7 +52,7 @@
<Button mnemonicParsing="false" opacity="0.3" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
</children>
</AnchorPane>
<AnchorPane layoutX="10.0" layoutY="10.0" prefHeight="50.0" prefWidth="225.0" AnchorPane.leftAnchor="10.0" AnchorPane.topAnchor="230.0">
<AnchorPane layoutX="10.0" layoutY="10.0" prefHeight="50.0" prefWidth="225.0" visible="false" AnchorPane.leftAnchor="10.0" AnchorPane.topAnchor="230.0">
<children>
<HBox spacing="10.0" AnchorPane.leftAnchor="30.0" AnchorPane.topAnchor="7.0">
<children>