Compare commits
20 Commits
Author | SHA1 | Date |
---|---|---|
Kane Wang | 3b1844c994 | |
Kane Wang | db8f9e9c05 | |
Kane Wang | 4c0cb3c76e | |
Kane Wang | 65431a0f0e | |
Kane Wang | cd8bcb8ba0 | |
Kane Wang | e800558a32 | |
Kane Wang | b993638e5b | |
Kane Wang | 6671cb69c9 | |
Kane Wang | 7abeffb61a | |
Kane Wang | 54d73db62f | |
Kane Wang | 8149e21e2f | |
Kane Wang | 2847747f53 | |
Kane Wang | 1231fe3132 | |
Kane Wang | fbe9f8e532 | |
Kane Wang | 53849e4f74 | |
Kane Wang | d1bcb3b956 | |
Kane Wang | 2dbe40b7a8 | |
Kane Wang | 566809868a | |
Kane Wang | e5be1e0b66 | |
Kane | 5672c83a71 |
|
@ -1,3 +1,99 @@
|
||||||
|
|
||||||
|
target/*
|
||||||
|
*.jar
|
||||||
|
|
||||||
|
# ---> C++
|
||||||
|
# Prerequisites
|
||||||
|
*.d
|
||||||
|
|
||||||
|
# Compiled Object files
|
||||||
|
*.slo
|
||||||
|
*.lo
|
||||||
|
*.o
|
||||||
|
*.obj
|
||||||
|
|
||||||
|
# Precompiled Headers
|
||||||
|
*.gch
|
||||||
|
*.pch
|
||||||
|
|
||||||
|
# Compiled Dynamic libraries
|
||||||
|
*.so
|
||||||
|
*.dylib
|
||||||
|
*.dll
|
||||||
|
|
||||||
|
# Fortran module files
|
||||||
|
*.mod
|
||||||
|
*.smod
|
||||||
|
|
||||||
|
# Compiled Static libraries
|
||||||
|
*.lai
|
||||||
|
*.la
|
||||||
|
*.a
|
||||||
|
*.lib
|
||||||
|
|
||||||
|
# Executables
|
||||||
|
*.exe
|
||||||
|
*.out
|
||||||
|
*.app
|
||||||
|
|
||||||
|
# ---> CMake
|
||||||
|
CMakeLists.txt.user
|
||||||
|
CMakeCache.txt
|
||||||
|
CMakeFiles
|
||||||
|
CMakeScripts
|
||||||
|
Testing
|
||||||
|
Makefile
|
||||||
|
cmake_install.cmake
|
||||||
|
install_manifest.txt
|
||||||
|
compile_commands.json
|
||||||
|
CTestTestfile.cmake
|
||||||
|
_deps
|
||||||
|
|
||||||
|
# ---> Java
|
||||||
|
# Compiled class file
|
||||||
|
*.class
|
||||||
|
|
||||||
|
# Log file
|
||||||
|
*.log
|
||||||
|
|
||||||
|
# BlueJ files
|
||||||
|
*.ctxt
|
||||||
|
|
||||||
|
# Mobile Tools for Java (J2ME)
|
||||||
|
.mtj.tmp/
|
||||||
|
|
||||||
|
# Package Files #
|
||||||
|
*.jar
|
||||||
|
*.war
|
||||||
|
*.nar
|
||||||
|
*.ear
|
||||||
|
*.zip
|
||||||
|
*.tar.gz
|
||||||
|
*.rar
|
||||||
|
|
||||||
|
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
|
||||||
|
hs_err_pid*
|
||||||
|
replay_pid*
|
||||||
|
|
||||||
|
# ---> Maven
|
||||||
|
target/
|
||||||
|
pom.xml.tag
|
||||||
|
pom.xml.releaseBackup
|
||||||
|
pom.xml.versionsBackup
|
||||||
|
pom.xml.next
|
||||||
|
release.properties
|
||||||
|
dependency-reduced-pom.xml
|
||||||
|
buildNumber.properties
|
||||||
|
.mvn/timing.properties
|
||||||
|
# https://github.com/takari/maven-wrapper#usage-without-binary-jar
|
||||||
|
.mvn/wrapper/maven-wrapper.jar
|
||||||
|
|
||||||
|
# Eclipse m2e generated files
|
||||||
|
# Eclipse Core
|
||||||
|
.project
|
||||||
|
# JDT-specific (Eclipse Java Development Tools)
|
||||||
|
.classpath
|
||||||
|
|
||||||
code/java/天气灾害预警/target/
|
code/java/天气灾害预警/target/
|
||||||
code/java/天气灾害预警/out/
|
code/java/天气灾害预警/out/
|
||||||
*.jar
|
*.jar
|
||||||
|
|
|
@ -1,8 +0,0 @@
|
||||||
# Default ignored files
|
|
||||||
/shelf/
|
|
||||||
/workspace.xml
|
|
||||||
# Editor-based HTTP Client requests
|
|
||||||
/httpRequests/
|
|
||||||
# Datasource local storage ignored files
|
|
||||||
/dataSources/
|
|
||||||
/dataSources.local.xml
|
|
|
@ -1,16 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="CompilerConfiguration">
|
|
||||||
<annotationProcessing>
|
|
||||||
<profile name="Maven default annotation processors profile" enabled="true">
|
|
||||||
<sourceOutputDir name="target/generated-sources/annotations" />
|
|
||||||
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
|
|
||||||
<outputRelativeToContentRoot value="true" />
|
|
||||||
<module name="disaster_warning" />
|
|
||||||
</profile>
|
|
||||||
</annotationProcessing>
|
|
||||||
<bytecodeTargetLevel>
|
|
||||||
<module name="天气灾害预警" target="17" />
|
|
||||||
</bytecodeTargetLevel>
|
|
||||||
</component>
|
|
||||||
</project>
|
|
|
@ -1,25 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
|
|
||||||
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
|
|
||||||
<output url="file://$MODULE_DIR$/target/classes" />
|
|
||||||
<output-test url="file://$MODULE_DIR$/target/test-classes" />
|
|
||||||
<content url="file://$MODULE_DIR$">
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/target" />
|
|
||||||
</content>
|
|
||||||
<orderEntry type="inheritedJdk" />
|
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
|
||||||
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.2" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.4" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.9" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils:1.9.3" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2.1" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: commons-lang:commons-lang:2.6" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: commons-logging:commons-logging:1.1.1" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: net.sf.ezmorph:ezmorph:1.0.6" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: net.sf.json-lib:json-lib:jdk15:2.4" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.9.8" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.9.8" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.9.8" level="project" />
|
|
||||||
</component>
|
|
||||||
</module>
|
|
|
@ -1,7 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="Encoding">
|
|
||||||
<file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
|
|
||||||
<file url="PROJECT" charset="UTF-8" />
|
|
||||||
</component>
|
|
||||||
</project>
|
|
|
@ -1,25 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="RemoteRepositoriesConfiguration">
|
|
||||||
<remote-repository>
|
|
||||||
<option name="id" value="central" />
|
|
||||||
<option name="name" value="Central Repository" />
|
|
||||||
<option name="url" value="https://repo.maven.apache.org/maven2" />
|
|
||||||
</remote-repository>
|
|
||||||
<remote-repository>
|
|
||||||
<option name="id" value="central" />
|
|
||||||
<option name="name" value="Maven Central repository" />
|
|
||||||
<option name="url" value="https://repo1.maven.org/maven2" />
|
|
||||||
</remote-repository>
|
|
||||||
<remote-repository>
|
|
||||||
<option name="id" value="jboss.community" />
|
|
||||||
<option name="name" value="JBoss Community repository" />
|
|
||||||
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
|
|
||||||
</remote-repository>
|
|
||||||
<remote-repository>
|
|
||||||
<option name="id" value="central" />
|
|
||||||
<option name="name" value="Central Repository" />
|
|
||||||
<option name="url" value="https://maven.aliyun.com/repository/public" />
|
|
||||||
</remote-repository>
|
|
||||||
</component>
|
|
||||||
</project>
|
|
|
@ -1,14 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
|
||||||
<component name="MavenProjectsManager">
|
|
||||||
<option name="originalFiles">
|
|
||||||
<list>
|
|
||||||
<option value="$PROJECT_DIR$/pom.xml" />
|
|
||||||
</list>
|
|
||||||
</option>
|
|
||||||
</component>
|
|
||||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
|
||||||
<output url="file://$PROJECT_DIR$/out" />
|
|
||||||
</component>
|
|
||||||
</project>
|
|
|
@ -1,29 +0,0 @@
|
||||||
<component name="ProjectRunConfigurationManager">
|
|
||||||
<configuration default="false" name="compile" type="MavenRunConfiguration" factoryName="Maven">
|
|
||||||
<MavenSettings>
|
|
||||||
<option name="myGeneralSettings" />
|
|
||||||
<option name="myRunnerSettings" />
|
|
||||||
<option name="myRunnerParameters">
|
|
||||||
<MavenRunnerParameters>
|
|
||||||
<option name="profiles">
|
|
||||||
<set />
|
|
||||||
</option>
|
|
||||||
<option name="goals">
|
|
||||||
<list>
|
|
||||||
<option value="compile" />
|
|
||||||
</list>
|
|
||||||
</option>
|
|
||||||
<option name="pomFileName" />
|
|
||||||
<option name="profilesMap">
|
|
||||||
<map>
|
|
||||||
<entry key="dev" value="true" />
|
|
||||||
</map>
|
|
||||||
</option>
|
|
||||||
<option name="resolveToWorkspace" value="false" />
|
|
||||||
<option name="workingDirPath" value="$PROJECT_DIR$" />
|
|
||||||
</MavenRunnerParameters>
|
|
||||||
</option>
|
|
||||||
</MavenSettings>
|
|
||||||
<method v="2" />
|
|
||||||
</configuration>
|
|
||||||
</component>
|
|
|
@ -1,124 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="Palette2">
|
|
||||||
<group name="Swing">
|
|
||||||
<item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
|
|
||||||
</item>
|
|
||||||
<item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.png" removable="false" auto-create-binding="false" can-attach-label="true">
|
|
||||||
<default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
|
|
||||||
<initial-values>
|
|
||||||
<property name="text" value="Button" />
|
|
||||||
</initial-values>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
|
|
||||||
<initial-values>
|
|
||||||
<property name="text" value="RadioButton" />
|
|
||||||
</initial-values>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
|
|
||||||
<initial-values>
|
|
||||||
<property name="text" value="CheckBox" />
|
|
||||||
</initial-values>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
|
|
||||||
<initial-values>
|
|
||||||
<property name="text" value="Label" />
|
|
||||||
</initial-values>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
|
||||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
|
||||||
<preferred-size width="150" height="-1" />
|
|
||||||
</default-constraints>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
|
||||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
|
||||||
<preferred-size width="150" height="-1" />
|
|
||||||
</default-constraints>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
|
||||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
|
||||||
<preferred-size width="150" height="-1" />
|
|
||||||
</default-constraints>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
|
||||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
|
||||||
<preferred-size width="150" height="50" />
|
|
||||||
</default-constraints>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
|
||||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
|
||||||
<preferred-size width="150" height="50" />
|
|
||||||
</default-constraints>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
|
||||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
|
||||||
<preferred-size width="150" height="50" />
|
|
||||||
</default-constraints>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
|
||||||
<default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
|
||||||
<preferred-size width="150" height="50" />
|
|
||||||
</default-constraints>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
|
|
||||||
<preferred-size width="150" height="50" />
|
|
||||||
</default-constraints>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
|
||||||
<preferred-size width="150" height="50" />
|
|
||||||
</default-constraints>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
|
|
||||||
<preferred-size width="200" height="200" />
|
|
||||||
</default-constraints>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
|
|
||||||
<preferred-size width="200" height="200" />
|
|
||||||
</default-constraints>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
|
||||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
|
|
||||||
<preferred-size width="-1" height="20" />
|
|
||||||
</default-constraints>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
|
|
||||||
</item>
|
|
||||||
</group>
|
|
||||||
</component>
|
|
||||||
</project>
|
|
|
@ -1,6 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="VcsDirectoryMappings">
|
|
||||||
<mapping directory="$PROJECT_DIR$/../../.." vcs="Git" />
|
|
||||||
</component>
|
|
||||||
</project>
|
|
|
@ -1,147 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="AutoImportSettings">
|
|
||||||
<option name="autoReloadType" value="SELECTIVE" />
|
|
||||||
</component>
|
|
||||||
<component name="ChangeListManager">
|
|
||||||
<list default="true" id="e81b1d7b-ad5e-432e-bbb6-6fbbb75430af" name="Changes" comment="">
|
|
||||||
<change beforePath="$PROJECT_DIR$/.idea/encodings.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/encodings.xml" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/.idea/runConfigurations/compile.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/runConfigurations/compile.xml" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/pom.xml" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/src/main/java/AppMain.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/AppMain.java" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/src/main/java/com/cpic/xim/disaster_warning/QWeatherDisasterWarningItem.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/cpic/xim/disaster_warning/QWeatherDisasterWarningItem.java" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/src/main/java/com/cpic/xim/disaster_warning/QWeatherDisasterWarningRefer.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/cpic/xim/disaster_warning/QWeatherDisasterWarningRefer.java" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/src/main/java/com/cpic/xim/disaster_warning/WeatherDisasterWarningGrabber.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/cpic/xim/disaster_warning/WeatherDisasterWarningGrabber.java" afterDir="false" />
|
|
||||||
</list>
|
|
||||||
<option name="SHOW_DIALOG" value="false" />
|
|
||||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
|
||||||
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
|
||||||
<option name="LAST_RESOLUTION" value="IGNORE" />
|
|
||||||
</component>
|
|
||||||
<component name="FileTemplateManagerImpl">
|
|
||||||
<option name="RECENT_TEMPLATES">
|
|
||||||
<list>
|
|
||||||
<option value="Class" />
|
|
||||||
</list>
|
|
||||||
</option>
|
|
||||||
</component>
|
|
||||||
<component name="Git.Settings">
|
|
||||||
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$/../../.." />
|
|
||||||
</component>
|
|
||||||
<component name="MarkdownSettingsMigration">
|
|
||||||
<option name="stateVersion" value="1" />
|
|
||||||
</component>
|
|
||||||
<component name="MavenImportPreferences">
|
|
||||||
<option name="generalSettings">
|
|
||||||
<MavenGeneralSettings>
|
|
||||||
<option name="localRepository" value="$PROJECT_DIR$/../../../../../../DevTools/maven/Repository" />
|
|
||||||
<option name="mavenHome" value="$PROJECT_DIR$/../../../../../../DevTools/maven/apache-maven-3.8.5" />
|
|
||||||
<option name="useMavenConfig" value="true" />
|
|
||||||
<option name="userSettingsFile" value="D:\DevTools\maven\apache-maven-3.8.5\conf\settings.xml" />
|
|
||||||
</MavenGeneralSettings>
|
|
||||||
</option>
|
|
||||||
</component>
|
|
||||||
<component name="MavenRunner">
|
|
||||||
<option name="delegateBuildToMaven" value="true" />
|
|
||||||
<option name="jreName" value="1.8" />
|
|
||||||
</component>
|
|
||||||
<component name="ProblemsViewState">
|
|
||||||
<option name="selectedTabId" value="ProjectErrors" />
|
|
||||||
</component>
|
|
||||||
<component name="ProjectId" id="26PXzlujlRW5evopBaaKpyGjycC" />
|
|
||||||
<component name="ProjectLevelVcsManager" settingsEditedManually="true">
|
|
||||||
<ConfirmationsSetting value="1" id="Add" />
|
|
||||||
</component>
|
|
||||||
<component name="ProjectViewState">
|
|
||||||
<option name="hideEmptyMiddlePackages" value="true" />
|
|
||||||
<option name="showLibraryContents" value="true" />
|
|
||||||
</component>
|
|
||||||
<component name="PropertiesComponent">
|
|
||||||
<property name="RunOnceActivity.OpenProjectViewOnStart" value="true" />
|
|
||||||
<property name="RunOnceActivity.ShowReadmeOnStart" value="true" />
|
|
||||||
<property name="WebServerToolWindowFactoryState" value="false" />
|
|
||||||
<property name="last_opened_file_path" value="$PROJECT_DIR$" />
|
|
||||||
<property name="node.js.detected.package.eslint" value="true" />
|
|
||||||
<property name="node.js.detected.package.tslint" value="true" />
|
|
||||||
<property name="node.js.selected.package.eslint" value="(autodetect)" />
|
|
||||||
<property name="node.js.selected.package.tslint" value="(autodetect)" />
|
|
||||||
<property name="nodejs_package_manager_path" value="npm" />
|
|
||||||
<property name="project.structure.last.edited" value="Modules" />
|
|
||||||
<property name="project.structure.proportion" value="0.15" />
|
|
||||||
<property name="project.structure.side.proportion" value="0.2" />
|
|
||||||
<property name="settings.editor.selected.configurable" value="MavenSettings" />
|
|
||||||
</component>
|
|
||||||
<component name="RunAnythingCache">
|
|
||||||
<option name="myCommands">
|
|
||||||
<command value="idea:idea -U" />
|
|
||||||
</option>
|
|
||||||
</component>
|
|
||||||
<component name="RunManager" selected="Maven.compile">
|
|
||||||
<configuration name="AppMain" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
|
|
||||||
<option name="MAIN_CLASS_NAME" value="AppMain" />
|
|
||||||
<module name="disaster_warning" />
|
|
||||||
<method v="2">
|
|
||||||
<option name="Make" enabled="true" />
|
|
||||||
</method>
|
|
||||||
</configuration>
|
|
||||||
<configuration default="true" type="JetRunConfigurationType">
|
|
||||||
<method v="2">
|
|
||||||
<option name="Make" enabled="true" />
|
|
||||||
</method>
|
|
||||||
</configuration>
|
|
||||||
<configuration default="true" type="KotlinStandaloneScriptRunConfigurationType">
|
|
||||||
<option name="filePath" />
|
|
||||||
<method v="2">
|
|
||||||
<option name="Make" enabled="true" />
|
|
||||||
</method>
|
|
||||||
</configuration>
|
|
||||||
<recent_temporary>
|
|
||||||
<list>
|
|
||||||
<item itemvalue="Application.AppMain" />
|
|
||||||
</list>
|
|
||||||
</recent_temporary>
|
|
||||||
</component>
|
|
||||||
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
|
|
||||||
<component name="TaskManager">
|
|
||||||
<task active="true" id="Default" summary="Default task">
|
|
||||||
<changelist id="e81b1d7b-ad5e-432e-bbb6-6fbbb75430af" name="Changes" comment="" />
|
|
||||||
<created>1647326463353</created>
|
|
||||||
<option name="number" value="Default" />
|
|
||||||
<option name="presentableId" value="Default" />
|
|
||||||
<updated>1647326463353</updated>
|
|
||||||
<workItem from="1647326471822" duration="6934000" />
|
|
||||||
<workItem from="1647334567225" duration="1649000" />
|
|
||||||
<workItem from="1647338154313" duration="98000" />
|
|
||||||
<workItem from="1647398025447" duration="1714000" />
|
|
||||||
<workItem from="1647399779588" duration="4127000" />
|
|
||||||
<workItem from="1647408946144" duration="1177000" />
|
|
||||||
<workItem from="1647410156413" duration="10520000" />
|
|
||||||
<workItem from="1647479250349" duration="12253000" />
|
|
||||||
<workItem from="1647531294555" duration="2501000" />
|
|
||||||
<workItem from="1647534118478" duration="613000" />
|
|
||||||
<workItem from="1647535499626" duration="591000" />
|
|
||||||
<workItem from="1647536147299" duration="30000" />
|
|
||||||
<workItem from="1647536420955" duration="167000" />
|
|
||||||
<workItem from="1647536652740" duration="1720000" />
|
|
||||||
</task>
|
|
||||||
<servers />
|
|
||||||
</component>
|
|
||||||
<component name="TypeScriptGeneratedFilesManager">
|
|
||||||
<option name="version" value="3" />
|
|
||||||
</component>
|
|
||||||
<component name="Vcs.Log.Tabs.Properties">
|
|
||||||
<option name="TAB_STATES">
|
|
||||||
<map>
|
|
||||||
<entry key="MAIN">
|
|
||||||
<value>
|
|
||||||
<State />
|
|
||||||
</value>
|
|
||||||
</entry>
|
|
||||||
</map>
|
|
||||||
</option>
|
|
||||||
</component>
|
|
||||||
<component name="XSLT-Support.FileAssociations.UIState">
|
|
||||||
<expand />
|
|
||||||
<select />
|
|
||||||
</component>
|
|
||||||
</project>
|
|
|
@ -134,3 +134,6 @@ $RECYCLE.BIN/
|
||||||
*.lnk
|
*.lnk
|
||||||
|
|
||||||
target/*
|
target/*
|
||||||
|
|
||||||
|
logs/*
|
||||||
|
logs
|
|
@ -3,10 +3,19 @@
|
||||||
"key": "fe9fa8eeeb6f4301a92541eed565dd15",
|
"key": "fe9fa8eeeb6f4301a92541eed565dd15",
|
||||||
"query_url": "https://devapi.qweather.com/v7/warning/now?",
|
"query_url": "https://devapi.qweather.com/v7/warning/now?",
|
||||||
"wechat_officalaccount_url": "https://cxxmwx.cpic.com.cn/app/index.php?i=2&c=entry&do=send_group_tpl_api&m=ok_tplmessage",
|
"wechat_officalaccount_url": "https://cxxmwx.cpic.com.cn/app/index.php?i=2&c=entry&do=send_group_tpl_api&m=ok_tplmessage",
|
||||||
|
"query_interval": 10,
|
||||||
"cities": [
|
"cities": [
|
||||||
{
|
{
|
||||||
"city_name": "厦门",
|
"city_name": "厦门",
|
||||||
"city_code": "101230201"
|
"city_code": "101230201"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"city_name": "同安",
|
||||||
|
"city_code": "101230202"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"city_name": "翔安",
|
||||||
|
"city_code": "101230207"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"notify_stuffs": [
|
"notify_stuffs": [
|
||||||
|
|
|
@ -21,17 +21,13 @@
|
||||||
<SOURCES />
|
<SOURCES />
|
||||||
</library>
|
</library>
|
||||||
</orderEntry>
|
</orderEntry>
|
||||||
|
<orderEntry type="library" name="Maven: com.oracle:ojdbc8:19.3.0.0.0" level="project" />
|
||||||
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.13" level="project" />
|
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.13" level="project" />
|
||||||
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.13" level="project" />
|
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.13" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: commons-logging:commons-logging:1.2" level="project" />
|
||||||
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.11" level="project" />
|
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.11" level="project" />
|
||||||
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.13.2" level="project" />
|
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.13.2" level="project" />
|
||||||
<orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
|
<orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
|
||||||
<orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils:1.9.4" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: commons-collections:commons-collections:20040616" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: commons-lang:commons-lang:2.6" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: commons-logging:commons-logging:1.1.1" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: net.sf.ezmorph:ezmorph:1.0.6" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: net.sf.json-lib:json-lib:jdk15:2.4" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.9.8" level="project" />
|
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.9.8" level="project" />
|
||||||
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.9.8" level="project" />
|
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.9.8" level="project" />
|
||||||
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.9.8" level="project" />
|
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.9.8" level="project" />
|
||||||
|
|
|
@ -267,15 +267,15 @@
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-databind/2.9.8/jackson-databind-2.9.8-sources.jar!/" />
|
<root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-databind/2.9.8/jackson-databind-2.9.8-sources.jar!/" />
|
||||||
</SOURCES>
|
</SOURCES>
|
||||||
</library>
|
</library>
|
||||||
<library name="Maven: commons-beanutils:commons-beanutils:1.9.4">
|
<library name="Maven: com.oracle:ojdbc8:19.3.0.0.0">
|
||||||
<CLASSES>
|
<CLASSES>
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/commons-beanutils/commons-beanutils/1.9.4/commons-beanutils-1.9.4.jar!/" />
|
<root url="jar://$MAVEN_REPOSITORY$/com/oracle/ojdbc8/19.3.0.0.0/ojdbc8-19.3.0.0.0.jar!/" />
|
||||||
</CLASSES>
|
</CLASSES>
|
||||||
<JAVADOC>
|
<JAVADOC>
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/commons-beanutils/commons-beanutils/1.9.4/commons-beanutils-1.9.4-javadoc.jar!/" />
|
<root url="jar://$MAVEN_REPOSITORY$/com/oracle/ojdbc8/19.3.0.0.0/ojdbc8-19.3.0.0.0-javadoc.jar!/" />
|
||||||
</JAVADOC>
|
</JAVADOC>
|
||||||
<SOURCES>
|
<SOURCES>
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/commons-beanutils/commons-beanutils/1.9.4/commons-beanutils-1.9.4-sources.jar!/" />
|
<root url="jar://$MAVEN_REPOSITORY$/com/oracle/ojdbc8/19.3.0.0.0/ojdbc8-19.3.0.0.0-sources.jar!/" />
|
||||||
</SOURCES>
|
</SOURCES>
|
||||||
</library>
|
</library>
|
||||||
<library name="Maven: commons-codec:commons-codec:1.11">
|
<library name="Maven: commons-codec:commons-codec:1.11">
|
||||||
|
@ -289,37 +289,15 @@
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/commons-codec/commons-codec/1.11/commons-codec-1.11-sources.jar!/" />
|
<root url="jar://$MAVEN_REPOSITORY$/commons-codec/commons-codec/1.11/commons-codec-1.11-sources.jar!/" />
|
||||||
</SOURCES>
|
</SOURCES>
|
||||||
</library>
|
</library>
|
||||||
<library name="Maven: commons-collections:commons-collections:20040616">
|
<library name="Maven: commons-logging:commons-logging:1.2">
|
||||||
<CLASSES>
|
<CLASSES>
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/commons-collections/commons-collections/20040616/commons-collections-20040616.jar!/" />
|
<root url="jar://$MAVEN_REPOSITORY$/commons-logging/commons-logging/1.2/commons-logging-1.2.jar!/" />
|
||||||
</CLASSES>
|
</CLASSES>
|
||||||
<JAVADOC>
|
<JAVADOC>
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/commons-collections/commons-collections/20040616/commons-collections-20040616-javadoc.jar!/" />
|
<root url="jar://$MAVEN_REPOSITORY$/commons-logging/commons-logging/1.2/commons-logging-1.2-javadoc.jar!/" />
|
||||||
</JAVADOC>
|
</JAVADOC>
|
||||||
<SOURCES>
|
<SOURCES>
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/commons-collections/commons-collections/20040616/commons-collections-20040616-sources.jar!/" />
|
<root url="jar://$MAVEN_REPOSITORY$/commons-logging/commons-logging/1.2/commons-logging-1.2-sources.jar!/" />
|
||||||
</SOURCES>
|
|
||||||
</library>
|
|
||||||
<library name="Maven: commons-lang:commons-lang:2.6">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/commons-lang/commons-lang/2.6/commons-lang-2.6.jar!/" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC>
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/commons-lang/commons-lang/2.6/commons-lang-2.6-javadoc.jar!/" />
|
|
||||||
</JAVADOC>
|
|
||||||
<SOURCES>
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/commons-lang/commons-lang/2.6/commons-lang-2.6-sources.jar!/" />
|
|
||||||
</SOURCES>
|
|
||||||
</library>
|
|
||||||
<library name="Maven: commons-logging:commons-logging:1.1.1">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar!/" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC>
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1-javadoc.jar!/" />
|
|
||||||
</JAVADOC>
|
|
||||||
<SOURCES>
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1-sources.jar!/" />
|
|
||||||
</SOURCES>
|
</SOURCES>
|
||||||
</library>
|
</library>
|
||||||
<library name="Maven: junit:junit:4.13.2">
|
<library name="Maven: junit:junit:4.13.2">
|
||||||
|
@ -333,28 +311,6 @@
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/junit/junit/4.13.2/junit-4.13.2-sources.jar!/" />
|
<root url="jar://$MAVEN_REPOSITORY$/junit/junit/4.13.2/junit-4.13.2-sources.jar!/" />
|
||||||
</SOURCES>
|
</SOURCES>
|
||||||
</library>
|
</library>
|
||||||
<library name="Maven: net.sf.ezmorph:ezmorph:1.0.6">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/net/sf/ezmorph/ezmorph/1.0.6/ezmorph-1.0.6.jar!/" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC>
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/net/sf/ezmorph/ezmorph/1.0.6/ezmorph-1.0.6-javadoc.jar!/" />
|
|
||||||
</JAVADOC>
|
|
||||||
<SOURCES>
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/net/sf/ezmorph/ezmorph/1.0.6/ezmorph-1.0.6-sources.jar!/" />
|
|
||||||
</SOURCES>
|
|
||||||
</library>
|
|
||||||
<library name="Maven: net.sf.json-lib:json-lib:jdk15:2.4">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/net/sf/json-lib/json-lib/2.4/json-lib-2.4-jdk15.jar!/" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC>
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/net/sf/json-lib/json-lib/2.4/json-lib-2.4-javadoc.jar!/" />
|
|
||||||
</JAVADOC>
|
|
||||||
<SOURCES>
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/net/sf/json-lib/json-lib/2.4/json-lib-2.4-sources.jar!/" />
|
|
||||||
</SOURCES>
|
|
||||||
</library>
|
|
||||||
<library name="Maven: org.apache.httpcomponents:httpclient:4.5.13">
|
<library name="Maven: org.apache.httpcomponents:httpclient:4.5.13">
|
||||||
<CLASSES>
|
<CLASSES>
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpclient/4.5.13/httpclient-4.5.13.jar!/" />
|
<root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpclient/4.5.13/httpclient-4.5.13.jar!/" />
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
|
||||||
|
handlers = java.util.logging.ConsoleHandler, java.util.logging.FileHandler
|
||||||
|
|
||||||
|
.level = INFO
|
||||||
|
|
||||||
|
java.util.logging.FileHandler.pattern = ./logs/log_%u.log
|
||||||
|
java.util.logging.FileHandler.limit = 50000
|
||||||
|
java.util.logging.FileHandler.count = 1
|
||||||
|
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
|
||||||
|
java.util.logging.FileHandler.append = true
|
|
@ -8,9 +8,9 @@
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.oracle</groupId>
|
<groupId>com.oracle</groupId>
|
||||||
<artifactId>ojdbc8</artifactId>
|
<artifactId>ojdbc8</artifactId>
|
||||||
<version>1.0</version>
|
<version>19.3.0.0.0</version>
|
||||||
<scope>system</scope>
|
<!-- <scope>system</scope>
|
||||||
<systemPath>${project.basedir}/lib/ojdbc8.jar</systemPath>
|
<systemPath>${project.basedir}/lib/ojdbc8.jar</systemPath> -->
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.apache.httpcomponents</groupId>
|
<groupId>org.apache.httpcomponents</groupId>
|
||||||
|
@ -23,37 +23,6 @@
|
||||||
<version>4.13.2</version>
|
<version>4.13.2</version>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>commons-beanutils</groupId>
|
|
||||||
<artifactId>commons-beanutils</artifactId>
|
|
||||||
<version>1.9.4</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>commons-collections</groupId>
|
|
||||||
<artifactId>commons-collections</artifactId>
|
|
||||||
<version>20040616</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>commons-lang</groupId>
|
|
||||||
<artifactId>commons-lang</artifactId>
|
|
||||||
<version>2.6</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>commons-logging</groupId>
|
|
||||||
<artifactId>commons-logging</artifactId>
|
|
||||||
<version>1.1.1</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>net.sf.ezmorph</groupId>
|
|
||||||
<artifactId>ezmorph</artifactId>
|
|
||||||
<version>1.0.6</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>net.sf.json-lib</groupId>
|
|
||||||
<artifactId>json-lib</artifactId>
|
|
||||||
<version>2.4</version>
|
|
||||||
<classifier>jdk15</classifier>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.fasterxml.jackson.core</groupId>
|
<groupId>com.fasterxml.jackson.core</groupId>
|
||||||
<artifactId>jackson-core</artifactId>
|
<artifactId>jackson-core</artifactId>
|
||||||
|
@ -79,10 +48,39 @@
|
||||||
</properties>
|
</properties>
|
||||||
<build>
|
<build>
|
||||||
<defaultGoal>compile</defaultGoal>
|
<defaultGoal>compile</defaultGoal>
|
||||||
|
|
||||||
<plugins>
|
<plugins>
|
||||||
<!-- <plugin>
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-surefire-plugin</artifactId>
|
||||||
|
<version>3.0.0-M6</version>
|
||||||
|
<configuration>
|
||||||
|
<skipTests>true</skipTests>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
<artifactId>maven-assembly-plugin</artifactId>
|
<artifactId>maven-assembly-plugin</artifactId>
|
||||||
</plugin> -->
|
<configuration>
|
||||||
|
<descriptorRefs>
|
||||||
|
<descriptorRef>jar-with-dependencies</descriptorRef>
|
||||||
|
</descriptorRefs>
|
||||||
|
<archive>
|
||||||
|
<manifest>
|
||||||
|
<mainClass>AppMain</mainClass>
|
||||||
|
</manifest>
|
||||||
|
</archive>
|
||||||
|
</configuration>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>make-assmenbly</id>
|
||||||
|
<phase>package</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>single</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
<profiles>
|
<profiles>
|
||||||
|
|
|
@ -1,62 +1,55 @@
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @Author: Kane
|
* @Author: Kane
|
||||||
* @Date: 2022-04-22 10:53:49
|
* @Date: 2022-04-22 10:53:49
|
||||||
* @LastEditors: Kane
|
* @LastEditors: Kane
|
||||||
* @LastEditTime: 2022-05-06 11:08:07
|
* @LastEditTime: 2022-06-07 13:16:35
|
||||||
* @FilePath: \DisasterWarning\src\main\java\AppMain.java
|
* @FilePath: \DisasterWarning\src\main\java\AppMain.java
|
||||||
* @Description: 和风天气预警推送厦门太保公众号主程序!
|
* @Description: 和风天气预警推送厦门太保公众号主程序!
|
||||||
*
|
*
|
||||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||||
*/
|
*/
|
||||||
|
import com.cpic.xim.config.AppConfigManager;
|
||||||
import com.cpic.xim.config.City;
|
import com.cpic.xim.config.City;
|
||||||
import com.cpic.xim.notify.disaster.QWeatherDisasterWarning;
|
import com.cpic.xim.notify.disaster.QWeatherDisasterWarning;
|
||||||
|
import com.cpic.xim.notify.disaster.QWeatherDisasterWarningItem;
|
||||||
import com.cpic.xim.notify.disaster.WeatherDisasterWarningGrabber;
|
import com.cpic.xim.notify.disaster.WeatherDisasterWarningGrabber;
|
||||||
import com.cpic.xim.wechat.officalAccount.sendMessage;
|
import com.cpic.xim.wechat.officalAccount.sendMessage;
|
||||||
import com.cpic.xim.config.WeatherDisasterNotifyConfig;
|
import com.cpic.xim.config.WeatherDisasterNotifyConfig;
|
||||||
|
import java.io.FileInputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
import java.util.logging.*;
|
import java.util.logging.*;
|
||||||
|
|
||||||
|
public class AppMain {
|
||||||
|
// private final static String LOG_FILE_PATH = "./logs/app%u.log";
|
||||||
|
|
||||||
public class AppMain
|
public static void main(String[] args) {
|
||||||
{
|
|
||||||
private final static String LOG_FILE_PATH = "./app.log";
|
|
||||||
|
|
||||||
public static void main( String[] args )
|
|
||||||
{
|
|
||||||
String json;
|
String json;
|
||||||
WeatherDisasterNotifyConfig config = null;
|
WeatherDisasterNotifyConfig config = null;
|
||||||
QWeatherDisasterWarning warning = null;
|
QWeatherDisasterWarning warning = null;
|
||||||
Logger logger = null;
|
Logger logger = null;
|
||||||
|
|
||||||
// 配置logger
|
// 配置logger
|
||||||
try
|
try {
|
||||||
{
|
|
||||||
setRootLogger();
|
setRootLogger();
|
||||||
|
|
||||||
logger = Logger.getLogger( "com.cpicxim" );
|
logger = Logger.getLogger("com.cpicxim");
|
||||||
}
|
} catch (IOException error) {
|
||||||
catch ( IOException error )
|
System.out.println("配置logger失败,原因:" + error.getMessage());
|
||||||
{
|
|
||||||
System.out.println( "配置logger失败,原因:" + error.getMessage() );
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 读取配置
|
// 读取配置
|
||||||
try
|
try {
|
||||||
{
|
config = AppConfigManager.getConfig();
|
||||||
config = WeatherDisasterNotifyConfig.getConfig();
|
} catch (IOException error) {
|
||||||
}
|
System.out.println("读取配置文件失败!");
|
||||||
catch ( IOException error )
|
System.out.println(error.getMessage());
|
||||||
{
|
|
||||||
System.out.println( "读取配置文件失败!" );
|
|
||||||
System.out.println( error.getMessage() );
|
|
||||||
|
|
||||||
logger.log( Level.SEVERE, "读取配置文件失败:{0}", error.getMessage() );
|
logger.log(Level.SEVERE, "读取配置文件失败:{0}", error.getMessage());
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -66,57 +59,68 @@ public class AppMain
|
||||||
String userKey = config.getKey();
|
String userKey = config.getKey();
|
||||||
|
|
||||||
// 遍历所有城市,查询是否有警报,有则推送。
|
// 遍历所有城市,查询是否有警报,有则推送。
|
||||||
for ( City city : cities )
|
while (true) {
|
||||||
{
|
for (City city : cities) {
|
||||||
try
|
try {
|
||||||
{
|
json = WeatherDisasterWarningGrabber.getWeatherDisasterWarningJSON(queryURL,
|
||||||
json = WeatherDisasterWarningGrabber.getWeatherDisasterWarningJSON( queryURL,
|
userKey, city.getCityCode());
|
||||||
userKey, city.getCityCode() );
|
warning = WeatherDisasterWarningGrabber.convertWeatherDisasterWarning(json);
|
||||||
warning = WeatherDisasterWarningGrabber.convertWeatherDisasterWarning( json );
|
|
||||||
|
|
||||||
logger.log( Level.INFO, "查询{0}天气预警,结果:{1}。", new Object[]
|
logger.log(Level.INFO, "查询{0}天气预警,结果:{1}。", new Object[] { city.getCityName(), json });
|
||||||
{ city.getCityName(), json} );
|
|
||||||
|
|
||||||
// 判断是否有警报
|
Vector<QWeatherDisasterWarningItem> warningItems = warning.getWarning();
|
||||||
if ( warning.getWarning().isEmpty() == true)
|
|
||||||
{
|
// 判断是否有警报,没有警报就结束当前城市的处理
|
||||||
continue;
|
if (warningItems.isEmpty() == true) {
|
||||||
|
logger.log(Level.INFO, "查询{0}天气预警,无警报!。", new Object[] { city.getCityName() });
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 有警报,就遍历警报数组
|
||||||
|
for (QWeatherDisasterWarningItem item : warningItems) {
|
||||||
|
// 先检查是否已经发送过
|
||||||
|
if (sendMessage.checkWarningHasSended(item.getId()) == false) {
|
||||||
|
logger.log(Level.INFO, "查询{0}天气预警,ID:{1},已有发送记录,跳过。",
|
||||||
|
new Object[] { city.getCityName(), item.getId() });
|
||||||
|
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 没有发送过
|
||||||
|
logger.log(Level.INFO, "查询{0}天气预警,发送日志。", new Object[] { city.getCityName() });
|
||||||
|
|
||||||
|
sendMessage.sendWeatherDisasterWarning(config.getWechatOfficalAccountURL(),
|
||||||
|
item);
|
||||||
|
|
||||||
|
logger.log(Level.INFO, "{0}天气预警,日志发送成功。", new Object[] { city.getCityName() });
|
||||||
|
|
||||||
|
// 将发送的警报,保存起来
|
||||||
|
sendMessage.saveWeatherDisasterWarning(city.getCityName(), item);
|
||||||
|
}
|
||||||
|
} catch (IOException error) {
|
||||||
|
System.out.println("查询" + city.getCityName() + "出现异常!");
|
||||||
|
System.out.println(error.getMessage());
|
||||||
|
|
||||||
|
logger.log(Level.SEVERE, "查询 {0} 出现异常:{1}。",
|
||||||
|
new Object[] { city.getCityName(), error.getMessage() });
|
||||||
|
} catch (SQLException error) {
|
||||||
|
logger.log(Level.SEVERE, "查询 {0} 写入数据库失败:{1}。",
|
||||||
|
new Object[] { city.getCityName(), error.getMessage() });
|
||||||
|
} catch (ClassNotFoundException error) {
|
||||||
|
logger.log(Level.SEVERE, "查询 {0} 加载oracle驱动失败:{1}。",
|
||||||
|
new Object[] { city.getCityName(), error.getMessage() });
|
||||||
|
|
||||||
|
} catch (Exception error) {
|
||||||
|
logger.log(Level.SEVERE, "查询 {0} 出现未知错误:{1}。",
|
||||||
|
new Object[] { city.getCityName(), error.getMessage() });
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.log( Level.INFO, "查询{0}天气预警,发送日志。", new Object[]
|
|
||||||
{ city.getCityName()} );
|
|
||||||
|
|
||||||
sendMessage.sendWeatherDisasterWarning( config.getWechatOfficalAccountURL(),
|
|
||||||
warning );
|
|
||||||
|
|
||||||
logger.log( Level.INFO, "{0}天气预警,日志发送成功。", new Object[]
|
|
||||||
{ city.getCityName()} );
|
|
||||||
|
|
||||||
sendMessage.saveWeatherDisasterWarning( city.getCityName(), warning );
|
|
||||||
}
|
}
|
||||||
catch ( IOException error )
|
|
||||||
{
|
|
||||||
System.out.println( "查询" + city.getCityName() + "出现异常!" );
|
|
||||||
System.out.println( error.getMessage() );
|
|
||||||
|
|
||||||
logger.log( Level.SEVERE, "查询 {0} 出现异常:{1}。", new Object[]
|
try {
|
||||||
{ city.getCityName(), error.getMessage()} );
|
logger.log(Level.INFO, "查询结束,休眠{0}分钟。", config.getQueryInterval());
|
||||||
}
|
Thread.sleep(config.getQueryInterval() * 1000 * 60);
|
||||||
catch ( SQLException error )
|
} catch (InterruptedException error) {
|
||||||
{
|
logger.log(Level.SEVERE, "线程休眠异常,错误信息:{0}", new Object[] { error.getMessage() });
|
||||||
logger.log( Level.SEVERE, "查询 {0} 写入数据库失败:{1}。", new Object[]
|
|
||||||
{ city.getCityName(), error.getMessage()} );
|
|
||||||
}
|
|
||||||
catch ( ClassNotFoundException error )
|
|
||||||
{
|
|
||||||
logger.log( Level.SEVERE, "查询 {0} 加载oracle驱动失败:{1}。", new Object[]
|
|
||||||
{ city.getCityName(), error.getMessage()} );
|
|
||||||
|
|
||||||
}
|
|
||||||
catch ( Exception error )
|
|
||||||
{
|
|
||||||
logger.log( Level.SEVERE, "查询 {0} 出现未知错误:{1}。", new Object[]
|
|
||||||
{ city.getCityName(), error.getMessage()} );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -124,19 +128,16 @@ public class AppMain
|
||||||
/**
|
/**
|
||||||
* 设置JUL的logger。
|
* 设置JUL的logger。
|
||||||
*/
|
*/
|
||||||
private static void setRootLogger() throws IOException
|
private static void setRootLogger() throws IOException {
|
||||||
{
|
LogManager logManager = LogManager.getLogManager();
|
||||||
Logger rootLogger = Logger.getLogger( "com.cpicxim" );
|
// 使用外部的配置文件。
|
||||||
ConsoleHandler consoleHandler = new ConsoleHandler();
|
FileInputStream configFile = new FileInputStream("./logging.properties");
|
||||||
FileHandler fileHandler = new FileHandler( LOG_FILE_PATH );
|
// 使用jar中的配置文件。
|
||||||
SimpleFormatter formatter = new SimpleFormatter();
|
// InputStream configFile =
|
||||||
|
// AppMain.class.getClassLoader().getResourceAsStream( "logging.properties" );
|
||||||
|
|
||||||
consoleHandler.setFormatter( formatter );
|
logManager.readConfiguration(configFile);
|
||||||
fileHandler.setFormatter( formatter );
|
|
||||||
rootLogger.addHandler( consoleHandler );
|
|
||||||
rootLogger.addHandler( fileHandler );
|
|
||||||
|
|
||||||
rootLogger.setUseParentHandlers( false );
|
Logger.getLogger("com.cpicxim");
|
||||||
rootLogger.setLevel( Level.ALL );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,79 @@
|
||||||
|
/*
|
||||||
|
* @Author: Kane
|
||||||
|
* @Date: 2022-05-10 16:06:14
|
||||||
|
* @LastEditors: Kane
|
||||||
|
* @LastEditTime: 2022-05-10 16:09:07
|
||||||
|
* @FilePath: \DisasterWarning\src\main\java\com\cpic\xim\config\AppConfigManager.java
|
||||||
|
* @Description:
|
||||||
|
*
|
||||||
|
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.cpic.xim.config;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
import com.fasterxml.jackson.databind.PropertyNamingStrategy;
|
||||||
|
|
||||||
|
public class AppConfigManager
|
||||||
|
{
|
||||||
|
private static final int BUFFER_SIZE = 1024;
|
||||||
|
private static final String CONFIG_FILE_CHARSET = "UTF-8";
|
||||||
|
private static final String CONFIG_FILE_PATH = "./config.json";
|
||||||
|
private static WeatherDisasterNotifyConfig appConfig = null;
|
||||||
|
|
||||||
|
public static WeatherDisasterNotifyConfig getConfig() throws IOException
|
||||||
|
|
||||||
|
{
|
||||||
|
if ( appConfig != null)
|
||||||
|
{
|
||||||
|
return appConfig;
|
||||||
|
}
|
||||||
|
|
||||||
|
ObjectMapper mapper = new ObjectMapper();
|
||||||
|
FileInputStream configFile = null;
|
||||||
|
InputStreamReader in = null;
|
||||||
|
StringBuffer json = null;
|
||||||
|
char[] buffer = new char[BUFFER_SIZE];
|
||||||
|
|
||||||
|
// 设置json属性
|
||||||
|
mapper.setPropertyNamingStrategy( PropertyNamingStrategy.SNAKE_CASE );
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
configFile = new FileInputStream( CONFIG_FILE_PATH );
|
||||||
|
in = new InputStreamReader( configFile, CONFIG_FILE_CHARSET );
|
||||||
|
json = new StringBuffer();
|
||||||
|
|
||||||
|
int length = in.read( buffer );
|
||||||
|
|
||||||
|
while (length != -1)
|
||||||
|
{
|
||||||
|
json.append( buffer );
|
||||||
|
|
||||||
|
length = in.read( buffer );
|
||||||
|
}
|
||||||
|
|
||||||
|
appConfig = mapper.readValue( json.toString(), WeatherDisasterNotifyConfig.class );
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
if ( configFile != null)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
configFile.close();
|
||||||
|
}
|
||||||
|
catch ( IOException e )
|
||||||
|
{
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return appConfig;
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,72 +1,22 @@
|
||||||
|
/*
|
||||||
|
* @Author: Kane
|
||||||
|
* @Date: 2022-04-24 10:21:46
|
||||||
|
* @LastEditors: Kane
|
||||||
|
* @LastEditTime: 2022-05-10 16:16:28
|
||||||
|
* @FilePath: \DisasterWarning\src\main\java\com\cpic\xim\config\WeatherDisasterNotifyConfig.java
|
||||||
|
* @Description:
|
||||||
|
*
|
||||||
|
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||||
|
*/
|
||||||
package com.cpic.xim.config;
|
package com.cpic.xim.config;
|
||||||
|
|
||||||
import java.io.InputStreamReader;
|
|
||||||
import java.io.FileInputStream;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
||||||
import com.fasterxml.jackson.databind.PropertyNamingStrategy;
|
|
||||||
|
|
||||||
public class WeatherDisasterNotifyConfig
|
public class WeatherDisasterNotifyConfig
|
||||||
{
|
{
|
||||||
private static final int BUFFER_SIZE = 1024;
|
|
||||||
private static final String CONFIG_FILE_CHARSET = "UTF-8";
|
|
||||||
private static final String CONFIG_FILE_PATH = "./config.json";
|
|
||||||
private static WeatherDisasterNotifyConfig appConfig = null;
|
|
||||||
|
|
||||||
public static WeatherDisasterNotifyConfig getConfig() throws IOException
|
|
||||||
|
|
||||||
{
|
|
||||||
if ( appConfig != null)
|
|
||||||
{
|
|
||||||
return appConfig;
|
|
||||||
}
|
|
||||||
|
|
||||||
ObjectMapper mapper = new ObjectMapper();
|
|
||||||
FileInputStream configFile = null;
|
|
||||||
InputStreamReader in = null;
|
|
||||||
StringBuffer json = null;
|
|
||||||
char[] buffer = new char[BUFFER_SIZE];
|
|
||||||
|
|
||||||
// 设置json属性
|
|
||||||
mapper.setPropertyNamingStrategy( PropertyNamingStrategy.SNAKE_CASE );
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
configFile = new FileInputStream( CONFIG_FILE_PATH );
|
|
||||||
in = new InputStreamReader( configFile, CONFIG_FILE_CHARSET );
|
|
||||||
json = new StringBuffer();
|
|
||||||
|
|
||||||
int length = in.read( buffer );
|
|
||||||
|
|
||||||
while (length != -1)
|
|
||||||
{
|
|
||||||
json.append( buffer );
|
|
||||||
|
|
||||||
length = in.read( buffer );
|
|
||||||
}
|
|
||||||
|
|
||||||
appConfig = mapper.readValue( json.toString(), WeatherDisasterNotifyConfig.class );
|
|
||||||
}
|
|
||||||
finally
|
|
||||||
{
|
|
||||||
if ( configFile != null)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
configFile.close();
|
|
||||||
}
|
|
||||||
catch ( IOException e )
|
|
||||||
{
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return appConfig;
|
|
||||||
}
|
|
||||||
|
|
||||||
public WeatherDisasterNotifyConfig()
|
public WeatherDisasterNotifyConfig()
|
||||||
{};
|
{};
|
||||||
|
@ -106,6 +56,18 @@ public class WeatherDisasterNotifyConfig
|
||||||
return cities;
|
return cities;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public int getQueryInterval()
|
||||||
|
{
|
||||||
|
return queryInterval;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setQueryInterval( int queryInterval )
|
||||||
|
{
|
||||||
|
this.queryInterval = queryInterval;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public void setCities( Vector<City> cities )
|
public void setCities( Vector<City> cities )
|
||||||
{
|
{
|
||||||
this.cities = cities;
|
this.cities = cities;
|
||||||
|
@ -131,12 +93,24 @@ public class WeatherDisasterNotifyConfig
|
||||||
this.wechatOfficalAccountURL = wechatOfficalAccountURL;
|
this.wechatOfficalAccountURL = wechatOfficalAccountURL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@JsonProperty( "title")
|
||||||
private String title;
|
private String title;
|
||||||
|
|
||||||
|
@JsonProperty( "key")
|
||||||
private String key;
|
private String key;
|
||||||
|
|
||||||
|
@JsonProperty( "query_url")
|
||||||
private String queryUrl;
|
private String queryUrl;
|
||||||
|
|
||||||
|
@JsonProperty( "query_interval")
|
||||||
|
private int queryInterval;
|
||||||
|
|
||||||
@JsonProperty( "wechat_officalaccount_url")
|
@JsonProperty( "wechat_officalaccount_url")
|
||||||
private String wechatOfficalAccountURL;
|
private String wechatOfficalAccountURL;
|
||||||
|
|
||||||
|
@JsonProperty( "cities")
|
||||||
private Vector<City> cities;
|
private Vector<City> cities;
|
||||||
|
|
||||||
|
@JsonProperty( "notify_stuffs")
|
||||||
private Vector<CpicxmStuff> notifyStuffs;
|
private Vector<CpicxmStuff> notifyStuffs;
|
||||||
}
|
}
|
||||||
|
|
|
@ -74,7 +74,7 @@ public class QWeatherDisasterWarning
|
||||||
private String code;
|
private String code;
|
||||||
|
|
||||||
@JsonProperty( "updateTime")
|
@JsonProperty( "updateTime")
|
||||||
@JsonFormat( pattern = "yyyy-MM-dd\'T\'HH:mmXXX")
|
@JsonFormat( pattern = "yyyy-MM-dd'T'HH:mmXXX")
|
||||||
private Date updateTime;
|
private Date updateTime;
|
||||||
|
|
||||||
@JsonProperty( "fxLink")
|
@JsonProperty( "fxLink")
|
||||||
|
|
|
@ -7,21 +7,21 @@ import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
//import com.fasterxml.jackson.annotation.JsonIgnore;
|
//import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
|
|
||||||
public class QWeatherDisasterWarningItem
|
public class QWeatherDisasterWarningItem {
|
||||||
{
|
public QWeatherDisasterWarningItem() {
|
||||||
public QWeatherDisasterWarningItem()
|
}
|
||||||
{}
|
|
||||||
|
|
||||||
public QWeatherDisasterWarningItem( String id, String sender, Date pubTime, String title,
|
public QWeatherDisasterWarningItem(String id, String sender, Date pubTime, String title, String status,
|
||||||
String status, String level, String type, String typeName, String text, String related,
|
String level, String severity, String severityColor, String type, String typeName, String text,
|
||||||
String urgency, String certainty)
|
String related, String urgency, String certainty) {
|
||||||
{
|
|
||||||
this.id = id;
|
this.id = id;
|
||||||
this.sender = sender;
|
this.sender = sender;
|
||||||
this.pubTime = pubTime;
|
this.pubTime = pubTime;
|
||||||
this.title = title;
|
this.title = title;
|
||||||
this.status = status;
|
this.status = status;
|
||||||
this.level = level;
|
this.level = level;
|
||||||
|
this.severity = severity;
|
||||||
|
this.severityColor = severityColor;
|
||||||
this.type = type;
|
this.type = type;
|
||||||
this.typeName = typeName;
|
this.typeName = typeName;
|
||||||
this.text = text;
|
this.text = text;
|
||||||
|
@ -31,163 +31,233 @@ public class QWeatherDisasterWarningItem
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean equals( Object o )
|
public int hashCode() {
|
||||||
{
|
final int prime = 31;
|
||||||
if ( this == o)
|
int result = 1;
|
||||||
{
|
result = prime * result + ((certainty == null) ? 0 : certainty.hashCode());
|
||||||
return true;
|
result = prime * result + ((id == null) ? 0 : id.hashCode());
|
||||||
}
|
result = prime * result + ((level == null) ? 0 : level.hashCode());
|
||||||
if ( o == null || getClass() != o.getClass())
|
result = prime * result + ((pubTime == null) ? 0 : pubTime.hashCode());
|
||||||
{
|
result = prime * result + ((related == null) ? 0 : related.hashCode());
|
||||||
return false;
|
result = prime * result + ((sender == null) ? 0 : sender.hashCode());
|
||||||
}
|
result = prime * result + ((severity == null) ? 0 : severity.hashCode());
|
||||||
QWeatherDisasterWarningItem that = (QWeatherDisasterWarningItem) o;
|
result = prime * result + ((severityColor == null) ? 0 : severityColor.hashCode());
|
||||||
return id.equals( that.id ) && Objects.equals( sender, that.sender )
|
result = prime * result + ((status == null) ? 0 : status.hashCode());
|
||||||
&& Objects.equals( pubTime, that.pubTime ) && Objects.equals( title, that.title )
|
result = prime * result + ((text == null) ? 0 : text.hashCode());
|
||||||
&& Objects.equals( status, that.status ) && Objects.equals( level, that.level )
|
result = prime * result + ((title == null) ? 0 : title.hashCode());
|
||||||
&& Objects.equals( type, that.type ) && Objects.equals( typeName, that.typeName )
|
result = prime * result + ((type == null) ? 0 : type.hashCode());
|
||||||
&& Objects.equals( text, that.text ) && Objects.equals( related, that.related )
|
result = prime * result + ((typeName == null) ? 0 : typeName.hashCode());
|
||||||
&& Objects.equals( urgency, that.urgency )
|
result = prime * result + ((urgency == null) ? 0 : urgency.hashCode());
|
||||||
&& Objects.equals( certainty, that.certainty );
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int hashCode()
|
public boolean equals(Object obj) {
|
||||||
{
|
if (this == obj)
|
||||||
return Objects.hash( id, sender, pubTime, title, status, level, type, typeName, text,
|
return true;
|
||||||
related, urgency, certainty );
|
if (obj == null)
|
||||||
|
return false;
|
||||||
|
if (getClass() != obj.getClass())
|
||||||
|
return false;
|
||||||
|
QWeatherDisasterWarningItem other = (QWeatherDisasterWarningItem) obj;
|
||||||
|
if (certainty == null) {
|
||||||
|
if (other.certainty != null)
|
||||||
|
return false;
|
||||||
|
} else if (!certainty.equals(other.certainty))
|
||||||
|
return false;
|
||||||
|
if (id == null) {
|
||||||
|
if (other.id != null)
|
||||||
|
return false;
|
||||||
|
} else if (!id.equals(other.id))
|
||||||
|
return false;
|
||||||
|
if (level == null) {
|
||||||
|
if (other.level != null)
|
||||||
|
return false;
|
||||||
|
} else if (!level.equals(other.level))
|
||||||
|
return false;
|
||||||
|
if (pubTime == null) {
|
||||||
|
if (other.pubTime != null)
|
||||||
|
return false;
|
||||||
|
} else if (!pubTime.equals(other.pubTime))
|
||||||
|
return false;
|
||||||
|
if (related == null) {
|
||||||
|
if (other.related != null)
|
||||||
|
return false;
|
||||||
|
} else if (!related.equals(other.related))
|
||||||
|
return false;
|
||||||
|
if (sender == null) {
|
||||||
|
if (other.sender != null)
|
||||||
|
return false;
|
||||||
|
} else if (!sender.equals(other.sender))
|
||||||
|
return false;
|
||||||
|
if (severity == null) {
|
||||||
|
if (other.severity != null)
|
||||||
|
return false;
|
||||||
|
} else if (!severity.equals(other.severity))
|
||||||
|
return false;
|
||||||
|
if (severityColor == null) {
|
||||||
|
if (other.severityColor != null)
|
||||||
|
return false;
|
||||||
|
} else if (!severityColor.equals(other.severityColor))
|
||||||
|
return false;
|
||||||
|
if (status == null) {
|
||||||
|
if (other.status != null)
|
||||||
|
return false;
|
||||||
|
} else if (!status.equals(other.status))
|
||||||
|
return false;
|
||||||
|
if (text == null) {
|
||||||
|
if (other.text != null)
|
||||||
|
return false;
|
||||||
|
} else if (!text.equals(other.text))
|
||||||
|
return false;
|
||||||
|
if (title == null) {
|
||||||
|
if (other.title != null)
|
||||||
|
return false;
|
||||||
|
} else if (!title.equals(other.title))
|
||||||
|
return false;
|
||||||
|
if (type == null) {
|
||||||
|
if (other.type != null)
|
||||||
|
return false;
|
||||||
|
} else if (!type.equals(other.type))
|
||||||
|
return false;
|
||||||
|
if (typeName == null) {
|
||||||
|
if (other.typeName != null)
|
||||||
|
return false;
|
||||||
|
} else if (!typeName.equals(other.typeName))
|
||||||
|
return false;
|
||||||
|
if (urgency == null) {
|
||||||
|
if (other.urgency != null)
|
||||||
|
return false;
|
||||||
|
} else if (!urgency.equals(other.urgency))
|
||||||
|
return false;
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getId()
|
public String getId() {
|
||||||
{
|
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setId( String id )
|
public void setId(String id) {
|
||||||
{
|
|
||||||
this.id = id;
|
this.id = id;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getSender()
|
public String getSender() {
|
||||||
{
|
|
||||||
return sender;
|
return sender;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSender( String sender )
|
public void setSender(String sender) {
|
||||||
{
|
|
||||||
this.sender = sender;
|
this.sender = sender;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Date getPubTime()
|
public Date getPubTime() {
|
||||||
{
|
|
||||||
return pubTime;
|
return pubTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setPubTime( Date pubTime )
|
public void setPubTime(Date pubTime) {
|
||||||
{
|
|
||||||
this.pubTime = pubTime;
|
this.pubTime = pubTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getTitle()
|
public String getTitle() {
|
||||||
{
|
|
||||||
return title;
|
return title;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setTitle( String title )
|
public void setTitle(String title) {
|
||||||
{
|
|
||||||
this.title = title;
|
this.title = title;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getStatus()
|
public String getStatus() {
|
||||||
{
|
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setStatus( String status )
|
public void setStatus(String status) {
|
||||||
{
|
|
||||||
this.status = status;
|
this.status = status;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getLevel()
|
public String getLevel() {
|
||||||
{
|
|
||||||
return level;
|
return level;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setLevel( String level )
|
public void setLevel(String level) {
|
||||||
{
|
|
||||||
this.level = level;
|
this.level = level;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getType()
|
public String getSeverity() {
|
||||||
{
|
return severity;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSeverity(String severity) {
|
||||||
|
this.severity = severity;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSeverityColor() {
|
||||||
|
return severityColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSeverityColor(String severityColor) {
|
||||||
|
this.severityColor = severityColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getType() {
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setType( String type )
|
public void setType(String type) {
|
||||||
{
|
|
||||||
this.type = type;
|
this.type = type;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getTypeName()
|
public String getTypeName() {
|
||||||
{
|
|
||||||
return typeName;
|
return typeName;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setTypeName( String typeName )
|
public void setTypeName(String typeName) {
|
||||||
{
|
|
||||||
this.typeName = typeName;
|
this.typeName = typeName;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getText()
|
public String getText() {
|
||||||
{
|
|
||||||
return text;
|
return text;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setText( String text )
|
public void setText(String text) {
|
||||||
{
|
|
||||||
this.text = text;
|
this.text = text;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getRelated()
|
public String getRelated() {
|
||||||
{
|
|
||||||
return related;
|
return related;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setRelated( String related )
|
public void setRelated(String related) {
|
||||||
{
|
|
||||||
this.related = related;
|
this.related = related;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getUrgency()
|
public String getUrgency() {
|
||||||
{
|
|
||||||
return urgency;
|
return urgency;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setUrgency( String urgency )
|
public void setUrgency(String urgency) {
|
||||||
{
|
|
||||||
this.urgency = urgency;
|
this.urgency = urgency;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getCertainty()
|
public String getCertainty() {
|
||||||
{
|
|
||||||
return certainty;
|
return certainty;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setCertainty( String certainty )
|
public void setCertainty(String certainty) {
|
||||||
{
|
|
||||||
this.certainty = certainty;
|
this.certainty = certainty;
|
||||||
}
|
}
|
||||||
|
|
||||||
private String id;
|
private String id;
|
||||||
private String sender;
|
private String sender;
|
||||||
|
|
||||||
@JsonProperty( "pubTime")
|
@JsonProperty("pubTime")
|
||||||
@JsonFormat( shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd\'T\'HH:mmXXX")
|
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd\'T\'HH:mmXXX")
|
||||||
private Date pubTime;
|
private Date pubTime;
|
||||||
|
|
||||||
private String title;
|
private String title;
|
||||||
private String status;
|
private String status;
|
||||||
private String level;
|
private String level;
|
||||||
|
private String severity;
|
||||||
|
private String severityColor;
|
||||||
|
|
||||||
private String type;
|
private String type;
|
||||||
private String typeName;
|
private String typeName;
|
||||||
private String text;
|
private String text;
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
* @Author: Kane
|
* @Author: Kane
|
||||||
* @Date: 2022-04-22 10:53:49
|
* @Date: 2022-04-22 10:53:49
|
||||||
* @LastEditors: Kane
|
* @LastEditors: Kane
|
||||||
* @LastEditTime: 2022-05-06 11:14:32
|
* @LastEditTime: 2022-05-12 09:51:13
|
||||||
* @FilePath: \DisasterWarning\src\main\java\com\cpic\xim\wechat\officalAccount\sendMessage.java
|
* @FilePath: \DisasterWarning\src\main\java\com\cpic\xim\wechat\officalAccount\sendMessage.java
|
||||||
* @Description: 用来推送公众号消息的程序库。
|
* @Description: 用来推送公众号消息的程序库。
|
||||||
*
|
*
|
||||||
|
@ -14,16 +14,17 @@ import com.cpic.xim.config.db.OracleConfigManager;
|
||||||
import com.cpic.xim.config.db.OracleConfig;
|
import com.cpic.xim.config.db.OracleConfig;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.MalformedURLException;
|
import java.net.MalformedURLException;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Vector;
|
|
||||||
|
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
import java.sql.DriverManager;
|
import java.sql.DriverManager;
|
||||||
import java.sql.PreparedStatement;
|
import java.sql.PreparedStatement;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
|
|
||||||
import com.cpic.xim.notify.disaster.*;
|
import com.cpic.xim.notify.disaster.*;
|
||||||
import com.cpic.xim.httpUtil.HttpUtils;
|
import com.cpic.xim.httpUtil.HttpUtils;
|
||||||
|
|
||||||
|
@ -39,13 +40,14 @@ public class sendMessage
|
||||||
/**
|
/**
|
||||||
* 推送天气灾害预警!接口文档参考 彭奕洁 编写《消息发送接口调用文档》
|
* 推送天气灾害预警!接口文档参考 彭奕洁 编写《消息发送接口调用文档》
|
||||||
* 使用 post 方式,请求体内容以最基础的 post 格式。
|
* 使用 post 方式,请求体内容以最基础的 post 格式。
|
||||||
|
*
|
||||||
* @param officalAccountURL 产险厦门分公司公众号接口网址
|
* @param officalAccountURL 产险厦门分公司公众号接口网址
|
||||||
* @param warning 灾害预警对象
|
* @param warningItem 灾害预警对象
|
||||||
*/
|
*/
|
||||||
public static void sendWeatherDisasterWarning( String officalAccountURL,
|
public static void sendWeatherDisasterWarning( String officalAccountURL,
|
||||||
QWeatherDisasterWarning warning )
|
QWeatherDisasterWarningItem warningItem )
|
||||||
{
|
{
|
||||||
Vector<QWeatherDisasterWarningItem> warningItems = warning.getWarning();
|
// Vector<QWeatherDisasterWarningItem> warningItems = warningItem.getWarning();
|
||||||
StringBuilder requestBody = null;
|
StringBuilder requestBody = null;
|
||||||
|
|
||||||
// 设置请求头参数
|
// 设置请求头参数
|
||||||
|
@ -56,36 +58,36 @@ public class sendMessage
|
||||||
headers.put( "Content-Type", "application/x-www-form-urlencoded;charset=UTF-8" );
|
headers.put( "Content-Type", "application/x-www-form-urlencoded;charset=UTF-8" );
|
||||||
|
|
||||||
// 遍历消息,将消息推送出去。
|
// 遍历消息,将消息推送出去。
|
||||||
for ( QWeatherDisasterWarningItem item : warningItems )
|
|
||||||
|
// 拼接消息内容
|
||||||
|
String title = warningItem.getTitle();
|
||||||
|
String text = warningItem.getText();
|
||||||
|
String color = warningLevel.containsKey( warningItem.getLevel() )
|
||||||
|
? warningLevel.get( warningItem.getLevel() )
|
||||||
|
: "#000000";
|
||||||
|
requestBody = new StringBuilder();
|
||||||
|
|
||||||
|
requestBody.append( "tplid=57&groupid=1&first=尊敬的#realname#,您好!&" );
|
||||||
|
requestBody.append( "keyword1=" ).append( title ).append( "&" );
|
||||||
|
requestBody.append( "keyword1color=" ).append( color ).append( "&" );
|
||||||
|
requestBody.append( "keyword2=" ).append( text );
|
||||||
|
|
||||||
|
try
|
||||||
{
|
{
|
||||||
// 拼接消息内容
|
HttpUtils.postHttpRequest( officalAccountURL, headers, requestBody.toString() );
|
||||||
String title = item.getTitle();
|
|
||||||
String text = item.getText();
|
|
||||||
String color = warningLevel.keySet().contains( item.getLevel() )
|
|
||||||
? warningLevel.get( item.getLevel() )
|
|
||||||
: "#000000";
|
|
||||||
requestBody = new StringBuilder();
|
|
||||||
|
|
||||||
requestBody.append( "tplid=57&groupid=1&first=尊敬的#realname#,您好!&" );
|
|
||||||
requestBody.append( "keyword1=" ).append( title ).append( "&" );
|
|
||||||
requestBody.append( "keyword1color=" ).append( color ).append( "&" );
|
|
||||||
requestBody.append( "keyword2=" ).append( text );
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
HttpUtils.postHttpRequest( officalAccountURL, headers, requestBody.toString() );
|
|
||||||
}
|
|
||||||
catch ( MalformedURLException error )
|
|
||||||
{
|
|
||||||
error.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
catch ( MalformedURLException error )
|
||||||
|
{
|
||||||
|
error.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 检查预警是否已经推送过,通过 QWeatherDisasterWarningItem 对象的 id 属性。
|
* 检查预警是否已经推送过,通过 QWeatherDisasterWarningItem 对象的 id 属性。
|
||||||
* 查询 oracle xmcx1 数据库 wechat 表空间下 weather_disaster_notify 表,
|
* 查询 oracle xmcx1 数据库 wechat 表空间下 weather_disaster_notify 表,
|
||||||
* 统计 warningID 的数量,如果不为0,说明该预警已经保存过,视为已经推送过。
|
* 统计 warningID 的数量,如果不为0,说明该预警已经保存过,视为已经推送过。
|
||||||
|
*
|
||||||
* @param warningID 预警的id
|
* @param warningID 预警的id
|
||||||
* @return 如果推送过,返回false,否则返回 true。
|
* @return 如果推送过,返回false,否则返回 true。
|
||||||
*/
|
*/
|
||||||
|
@ -94,16 +96,16 @@ public class sendMessage
|
||||||
{
|
{
|
||||||
boolean result = false;
|
boolean result = false;
|
||||||
|
|
||||||
OracleConfig dbConfig = OracleConfigManager.getOracleConfig();;
|
OracleConfig dbConfig = OracleConfigManager.getOracleConfig();
|
||||||
|
|
||||||
Connection conn = null;
|
Connection conn = null;
|
||||||
PreparedStatement stmt = null;
|
PreparedStatement stmt = null;
|
||||||
ResultSet rs = null;
|
ResultSet rs = null;
|
||||||
|
|
||||||
String jdbcURL = dbConfig.getJdbcURL();
|
String jdbcURL = dbConfig.getJdbcURL();
|
||||||
String userName = dbConfig.getUserName();
|
String userName = dbConfig.getUserName();
|
||||||
String password = dbConfig.getPassword();
|
String password = dbConfig.getPassword();
|
||||||
String sql = "select count(*) from weather_disaster_notify where notify_id = ?";
|
String sql = "select count(*) from weather_disaster_notify where notify_id = ?";
|
||||||
|
|
||||||
// Logger logger = Logger.getLogger( "com.cpicxim.wechat.officalAccount.sendMessage" );
|
// Logger logger = Logger.getLogger( "com.cpicxim.wechat.officalAccount.sendMessage" );
|
||||||
|
|
||||||
|
@ -117,7 +119,7 @@ public class sendMessage
|
||||||
|
|
||||||
rs = stmt.executeQuery();
|
rs = stmt.executeQuery();
|
||||||
|
|
||||||
if ( rs.next() && rs.getInt( 1 ) == 0)
|
if ( rs.next() && rs.getInt( 1 ) == 0 )
|
||||||
{
|
{
|
||||||
result = true;
|
result = true;
|
||||||
}
|
}
|
||||||
|
@ -126,7 +128,7 @@ public class sendMessage
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if ( rs != null)
|
if ( rs != null )
|
||||||
{
|
{
|
||||||
rs.close();
|
rs.close();
|
||||||
}
|
}
|
||||||
|
@ -138,7 +140,7 @@ public class sendMessage
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if ( stmt != null)
|
if ( stmt != null )
|
||||||
{
|
{
|
||||||
stmt.close();
|
stmt.close();
|
||||||
}
|
}
|
||||||
|
@ -150,7 +152,7 @@ public class sendMessage
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if ( conn != null)
|
if ( conn != null )
|
||||||
{
|
{
|
||||||
conn.close();
|
conn.close();
|
||||||
}
|
}
|
||||||
|
@ -168,25 +170,28 @@ public class sendMessage
|
||||||
* 保存天气预警警报数据。
|
* 保存天气预警警报数据。
|
||||||
* 保存至 oracle xmcx1 数据库 wechat 表空间下 weather_disaster_notify 表。
|
* 保存至 oracle xmcx1 数据库 wechat 表空间下 weather_disaster_notify 表。
|
||||||
* 保存的数据用来判断预警是否已经推送过,以防止反复推送数据。
|
* 保存的数据用来判断预警是否已经推送过,以防止反复推送数据。
|
||||||
* @param city 城市名称
|
*
|
||||||
|
* @param city 城市名称
|
||||||
* @param warning 预警数据,为 QWeatherDisasterWarningItem 对象。
|
* @param warning 预警数据,为 QWeatherDisasterWarningItem 对象。
|
||||||
* @throws SQLException 执行sql时可能抛出的异常。出现sql异常,就回滚事务。
|
* @throws SQLException 执行sql时可能抛出的异常。出现sql异常,就回滚事务。
|
||||||
* @throws IOException 读取数据库配置文件时可能抛出的异常。
|
* @throws IOException 读取数据库配置文件时可能抛出的异常。
|
||||||
* @throws ClassNotFoundException 加载oracle jdbc驱动时可能抛出的异常。
|
* @throws ClassNotFoundException 加载oracle jdbc驱动时可能抛出的异常。
|
||||||
*/
|
*/
|
||||||
public static void saveWeatherDisasterWarning( String city, QWeatherDisasterWarning warnings )
|
public static void saveWeatherDisasterWarning( String city,
|
||||||
|
QWeatherDisasterWarningItem warning )
|
||||||
throws SQLException, IOException, ClassNotFoundException
|
throws SQLException, IOException, ClassNotFoundException
|
||||||
{
|
{
|
||||||
Connection conn = null;
|
Connection conn = null;
|
||||||
PreparedStatement stmt = null;
|
PreparedStatement stmt = null;
|
||||||
|
|
||||||
String sql = "insert into weather_disaster_notify(notify_id, sender, city,"
|
String sql = new StringBuilder().append( "insert into weather_disaster_notify(notify_id, sender, city," )
|
||||||
+ "warning_level, warning_type_code, warning_type_name, title,"
|
.append( "warning_level, warning_type_code, warning_type_name, title," )
|
||||||
+ "text, pub_time) values( ?,?,?,?,?,?,?,?,?)";
|
.append( "text, pub_time) values( ?,?,?,?,?,?,?,?,?)" )
|
||||||
|
.toString();
|
||||||
|
|
||||||
OracleConfig dbConfig = OracleConfigManager.getOracleConfig();
|
OracleConfig dbConfig = OracleConfigManager.getOracleConfig();
|
||||||
|
|
||||||
String jdbcURL = dbConfig.getJdbcURL();
|
String jdbcURL = dbConfig.getJdbcURL();
|
||||||
String userName = dbConfig.getUserName();
|
String userName = dbConfig.getUserName();
|
||||||
String password = dbConfig.getPassword();
|
String password = dbConfig.getPassword();
|
||||||
|
|
||||||
|
@ -197,23 +202,21 @@ public class sendMessage
|
||||||
conn = DriverManager.getConnection( jdbcURL, userName, password );
|
conn = DriverManager.getConnection( jdbcURL, userName, password );
|
||||||
stmt = conn.prepareStatement( sql );
|
stmt = conn.prepareStatement( sql );
|
||||||
|
|
||||||
for ( QWeatherDisasterWarningItem warning : warnings.getWarning() )
|
conn.setAutoCommit( false );
|
||||||
{
|
|
||||||
java.sql.Timestamp pubTime =
|
|
||||||
new java.sql.Timestamp( warning.getPubTime().getTime() );
|
|
||||||
|
|
||||||
stmt.setString( 1, warning.getId() );
|
java.sql.Timestamp pubTime = new java.sql.Timestamp( warning.getPubTime().getTime() );
|
||||||
stmt.setString( 2, warning.getSender() );
|
|
||||||
stmt.setString( 3, city );
|
|
||||||
stmt.setString( 4, warning.getLevel() );
|
|
||||||
stmt.setString( 5, warning.getType() );
|
|
||||||
stmt.setString( 6, warning.getTypeName() );
|
|
||||||
stmt.setString( 7, warning.getTitle() );
|
|
||||||
stmt.setString( 8, warning.getText() );
|
|
||||||
stmt.setTimestamp( 9, pubTime );
|
|
||||||
|
|
||||||
stmt.execute();
|
stmt.setString( 1, warning.getId() );
|
||||||
}
|
stmt.setString( 2, warning.getSender() );
|
||||||
|
stmt.setString( 3, city );
|
||||||
|
stmt.setString( 4, warning.getLevel() );
|
||||||
|
stmt.setString( 5, warning.getType() );
|
||||||
|
stmt.setString( 6, warning.getTypeName() );
|
||||||
|
stmt.setString( 7, warning.getTitle() );
|
||||||
|
stmt.setString( 8, warning.getText() );
|
||||||
|
stmt.setTimestamp( 9, pubTime );
|
||||||
|
|
||||||
|
stmt.execute();
|
||||||
|
|
||||||
// 没有问题就提交
|
// 没有问题就提交
|
||||||
conn.commit();
|
conn.commit();
|
||||||
|
@ -221,7 +224,7 @@ public class sendMessage
|
||||||
catch ( SQLException error )
|
catch ( SQLException error )
|
||||||
{
|
{
|
||||||
// 出现sql错误,就回滚!
|
// 出现sql错误,就回滚!
|
||||||
if ( conn != null)
|
if ( conn != null )
|
||||||
{
|
{
|
||||||
conn.rollback();
|
conn.rollback();
|
||||||
}
|
}
|
||||||
|
@ -232,7 +235,7 @@ public class sendMessage
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if ( stmt != null)
|
if ( stmt != null )
|
||||||
{
|
{
|
||||||
stmt.close();
|
stmt.close();
|
||||||
}
|
}
|
||||||
|
@ -244,7 +247,7 @@ public class sendMessage
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if ( conn != null)
|
if ( conn != null )
|
||||||
{
|
{
|
||||||
conn.close();
|
conn.close();
|
||||||
}
|
}
|
||||||
|
@ -256,7 +259,6 @@ public class sendMessage
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static
|
static
|
||||||
{
|
{
|
||||||
// 预警级别色彩
|
// 预警级别色彩
|
||||||
|
@ -269,50 +271,49 @@ public class sendMessage
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class WechatOfficalAccountMessageParameter
|
class WechatOfficalAccountMessageParameter
|
||||||
{
|
{
|
||||||
|
|
||||||
WechatOfficalAccountMessageParameter()
|
WechatOfficalAccountMessageParameter()
|
||||||
{
|
{
|
||||||
tplID = 57;
|
tplID = 57;
|
||||||
groupID = 1;
|
groupID = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@JsonProperty( "tplid")
|
@JsonProperty("tplid")
|
||||||
private int tplID;
|
private int tplID;
|
||||||
|
|
||||||
@JsonProperty( "groupid")
|
@JsonProperty("groupid")
|
||||||
private int groupID;
|
private int groupID;
|
||||||
|
|
||||||
@JsonProperty( "first")
|
@JsonProperty("first")
|
||||||
private String first;
|
private String first;
|
||||||
|
|
||||||
@JsonProperty( "keyword1")
|
@JsonProperty("keyword1")
|
||||||
private String keyword1;
|
private String keyword1;
|
||||||
|
|
||||||
@JsonProperty( "keyword1color")
|
@JsonProperty("keyword1color")
|
||||||
private String keyword1Color;
|
private String keyword1Color;
|
||||||
|
|
||||||
@JsonProperty( "keyword2")
|
@JsonProperty("keyword2")
|
||||||
private String keyword2;
|
private String keyword2;
|
||||||
|
|
||||||
@JsonProperty( "keyword2color")
|
@JsonProperty("keyword2color")
|
||||||
private String keyword2Color;
|
private String keyword2Color;
|
||||||
|
|
||||||
@JsonProperty( "remark")
|
@JsonProperty("remark")
|
||||||
private String remark;
|
private String remark;
|
||||||
|
|
||||||
@JsonProperty( "remarkcolor")
|
@JsonProperty("remarkcolor")
|
||||||
private String remarkColor;
|
private String remarkColor;
|
||||||
|
|
||||||
@JsonProperty( "url")
|
@JsonProperty("url")
|
||||||
private String url;
|
private String url;
|
||||||
|
|
||||||
@JsonProperty( "appid")
|
@JsonProperty("appid")
|
||||||
private String appid;
|
private String appid;
|
||||||
|
|
||||||
@JsonProperty( "pagepath")
|
@JsonProperty("pagepath")
|
||||||
private String pagePath;
|
private String pagePath;
|
||||||
|
|
||||||
public int getTplID()
|
public int getTplID()
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
|
||||||
|
handlers = java.util.logging.ConsoleHandler, java.util.logging.FileHandler
|
||||||
|
|
||||||
|
.level = INFO
|
||||||
|
|
||||||
|
java.util.logging.FileHandler.pattern = ./logs/log_%u.log
|
||||||
|
java.util.logging.FileHandler.limit = 50000
|
||||||
|
java.util.logging.FileHandler.count = 10
|
||||||
|
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
|
||||||
|
java.util.logging.FileHandler.append = true;
|
|
@ -2,7 +2,7 @@
|
||||||
* @Author: Kane
|
* @Author: Kane
|
||||||
* @Date: 2022-04-22 10:53:49
|
* @Date: 2022-04-22 10:53:49
|
||||||
* @LastEditors: Kane
|
* @LastEditors: Kane
|
||||||
* @LastEditTime: 2022-05-06 11:14:35
|
* @LastEditTime: 2022-05-12 09:54:36
|
||||||
* @FilePath: \DisasterWarning\src\test\java\com\cpic\xim\wechat\officalAccount\sendMessageTest.java
|
* @FilePath: \DisasterWarning\src\test\java\com\cpic\xim\wechat\officalAccount\sendMessageTest.java
|
||||||
* @Description:
|
* @Description:
|
||||||
*
|
*
|
||||||
|
@ -12,7 +12,6 @@ package com.cpic.xim.wechat.officalAccount;
|
||||||
|
|
||||||
import com.cpic.xim.notify.disaster.QWeatherDisasterWarning;
|
import com.cpic.xim.notify.disaster.QWeatherDisasterWarning;
|
||||||
|
|
||||||
import org.junit.Test;
|
|
||||||
import static org.junit.Assert.*;
|
import static org.junit.Assert.*;
|
||||||
import com.cpic.xim.httpUtil.*;
|
import com.cpic.xim.httpUtil.*;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
@ -61,7 +60,7 @@ public class sendMessageTest
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
// @Test
|
||||||
public void testSendWeatherDisasterWarning() throws IOException
|
public void testSendWeatherDisasterWarning() throws IOException
|
||||||
{
|
{
|
||||||
String warningJSON =
|
String warningJSON =
|
||||||
|
@ -76,7 +75,7 @@ public class sendMessageTest
|
||||||
String city = "东山县";
|
String city = "东山县";
|
||||||
|
|
||||||
|
|
||||||
sendMessage.saveWeatherDisasterWarning( city, warning );
|
// sendMessage.saveWeatherDisasterWarning( city, warning );
|
||||||
}
|
}
|
||||||
catch ( Exception error )
|
catch ( Exception error )
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,135 +0,0 @@
|
||||||
### Java template
|
|
||||||
# Compiled class file
|
|
||||||
*.class
|
|
||||||
|
|
||||||
# Log file
|
|
||||||
*.log
|
|
||||||
|
|
||||||
# BlueJ files
|
|
||||||
*.ctxt
|
|
||||||
|
|
||||||
# Mobile Tools for Java (J2ME)
|
|
||||||
.mtj.tmp/
|
|
||||||
|
|
||||||
# Package Files #
|
|
||||||
*.jar
|
|
||||||
*.war
|
|
||||||
*.nar
|
|
||||||
*.ear
|
|
||||||
*.zip
|
|
||||||
*.tar.gz
|
|
||||||
*.rar
|
|
||||||
|
|
||||||
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
|
|
||||||
hs_err_pid*
|
|
||||||
|
|
||||||
### VisualStudioCode template
|
|
||||||
.vscode/*
|
|
||||||
!.vscode/settings.json
|
|
||||||
!.vscode/tasks.json
|
|
||||||
!.vscode/launch.json
|
|
||||||
!.vscode/extensions.json
|
|
||||||
*.code-workspace
|
|
||||||
|
|
||||||
# Local History for Visual Studio Code
|
|
||||||
.history/
|
|
||||||
|
|
||||||
### JetBrains template
|
|
||||||
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
|
|
||||||
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
|
|
||||||
|
|
||||||
# User-specific stuff
|
|
||||||
.idea/**/workspace.xml
|
|
||||||
.idea/**/tasks.xml
|
|
||||||
.idea/**/usage.statistics.xml
|
|
||||||
.idea/**/dictionaries
|
|
||||||
.idea/**/shelf
|
|
||||||
|
|
||||||
# Generated files
|
|
||||||
.idea/**/contentModel.xml
|
|
||||||
|
|
||||||
# Sensitive or high-churn files
|
|
||||||
.idea/**/dataSources/
|
|
||||||
.idea/**/dataSources.ids
|
|
||||||
.idea/**/dataSources.local.xml
|
|
||||||
.idea/**/sqlDataSources.xml
|
|
||||||
.idea/**/dynamic.xml
|
|
||||||
.idea/**/uiDesigner.xml
|
|
||||||
.idea/**/dbnavigator.xml
|
|
||||||
|
|
||||||
# Gradle
|
|
||||||
.idea/**/gradle.xml
|
|
||||||
.idea/**/libraries
|
|
||||||
|
|
||||||
# Gradle and Maven with auto-import
|
|
||||||
# When using Gradle or Maven with auto-import, you should exclude module files,
|
|
||||||
# since they will be recreated, and may cause churn. Uncomment if using
|
|
||||||
# auto-import.
|
|
||||||
# .idea/artifacts
|
|
||||||
# .idea/compiler.xml
|
|
||||||
# .idea/jarRepositories.xml
|
|
||||||
# .idea/modules.xml
|
|
||||||
# .idea/*.iml
|
|
||||||
# .idea/modules
|
|
||||||
# *.iml
|
|
||||||
# *.ipr
|
|
||||||
|
|
||||||
# CMake
|
|
||||||
cmake-build-*/
|
|
||||||
|
|
||||||
# Mongo Explorer plugin
|
|
||||||
.idea/**/mongoSettings.xml
|
|
||||||
|
|
||||||
# File-based project format
|
|
||||||
*.iws
|
|
||||||
|
|
||||||
# IntelliJ
|
|
||||||
out/
|
|
||||||
|
|
||||||
# mpeltonen/sbt-idea plugin
|
|
||||||
.idea_modules/
|
|
||||||
|
|
||||||
# JIRA plugin
|
|
||||||
atlassian-ide-plugin.xml
|
|
||||||
|
|
||||||
# Cursive Clojure plugin
|
|
||||||
.idea/replstate.xml
|
|
||||||
|
|
||||||
# Crashlytics plugin (for Android Studio and IntelliJ)
|
|
||||||
com_crashlytics_export_strings.xml
|
|
||||||
crashlytics.properties
|
|
||||||
crashlytics-build.properties
|
|
||||||
fabric.properties
|
|
||||||
|
|
||||||
# Editor-based Rest Client
|
|
||||||
.idea/httpRequests
|
|
||||||
|
|
||||||
# Android studio 3.1+ serialized cache file
|
|
||||||
.idea/caches/build_file_checksums.ser
|
|
||||||
|
|
||||||
### Windows template
|
|
||||||
# Windows thumbnail cache files
|
|
||||||
Thumbs.db
|
|
||||||
Thumbs.db:encryptable
|
|
||||||
ehthumbs.db
|
|
||||||
ehthumbs_vista.db
|
|
||||||
|
|
||||||
# Dump file
|
|
||||||
*.stackdump
|
|
||||||
|
|
||||||
# Folder config file
|
|
||||||
[Dd]esktop.ini
|
|
||||||
|
|
||||||
# Recycle Bin used on file shares
|
|
||||||
$RECYCLE.BIN/
|
|
||||||
|
|
||||||
# Windows Installer files
|
|
||||||
*.cab
|
|
||||||
*.msi
|
|
||||||
*.msix
|
|
||||||
*.msm
|
|
||||||
*.msp
|
|
||||||
|
|
||||||
# Windows shortcuts
|
|
||||||
*.lnk
|
|
||||||
|
|
|
@ -1,12 +0,0 @@
|
||||||
{
|
|
||||||
"tns_name": "xmcx1",
|
|
||||||
"ip_addr": "10.39.0.86",
|
|
||||||
"user_name": "",
|
|
||||||
"password": "",
|
|
||||||
"tables": [
|
|
||||||
{
|
|
||||||
"table_name": "",
|
|
||||||
"table_description": ""
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
|
@ -1,38 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
|
|
||||||
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
|
|
||||||
<output url="file://$MODULE_DIR$/target/classes" />
|
|
||||||
<output-test url="file://$MODULE_DIR$/target/test-classes" />
|
|
||||||
<content url="file://$MODULE_DIR$">
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/target" />
|
|
||||||
</content>
|
|
||||||
<orderEntry type="inheritedJdk" />
|
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
|
||||||
<orderEntry type="module-library" scope="TEST">
|
|
||||||
<library name="JUnit4">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="jar://$MODULE_DIR$/lib/junit-4.13.1.jar!/" />
|
|
||||||
<root url="jar://$MODULE_DIR$/lib/hamcrest-core-1.3.jar!/" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC />
|
|
||||||
<SOURCES />
|
|
||||||
</library>
|
|
||||||
</orderEntry>
|
|
||||||
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.2" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.4" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.9" level="project" />
|
|
||||||
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.4" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils:1.9.3" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2.1" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: commons-lang:commons-lang:2.6" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: commons-logging:commons-logging:1.1.1" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: net.sf.ezmorph:ezmorph:1.0.6" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: net.sf.json-lib:json-lib:jdk15:2.4" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.9.8" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.9.8" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.9.8" level="project" />
|
|
||||||
</component>
|
|
||||||
</module>
|
|
|
@ -1,381 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="CodeStyleManager">
|
|
||||||
<option name="USE_DEFAULT_CODE_STYLE_SCHEME" value="true" />
|
|
||||||
<option name="CODE_STYLE_SCHEME" value="" />
|
|
||||||
</component>
|
|
||||||
<component name="CompilerConfiguration">
|
|
||||||
<wildcardResourcePatterns>
|
|
||||||
<entry name="!?*.java" />
|
|
||||||
</wildcardResourcePatterns>
|
|
||||||
<annotationProcessing>
|
|
||||||
<profile name="Maven default annotation processors profile" enabled="true">
|
|
||||||
<sourceOutputDir name="target/generated-sources/annotations" />
|
|
||||||
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
|
|
||||||
<outputRelativeToContentRoot value="true" />
|
|
||||||
<module name="disaster_warning" />
|
|
||||||
</profile>
|
|
||||||
</annotationProcessing>
|
|
||||||
<bytecodeTargetLevel>
|
|
||||||
<module name="disaster_warning" target="1.8" />
|
|
||||||
</bytecodeTargetLevel>
|
|
||||||
</component>
|
|
||||||
<component name="Encoding" native2AsciiForPropertiesFiles="true" defaultCharsetForPropertiesFiles="UTF-8">
|
|
||||||
<file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
|
|
||||||
<file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" />
|
|
||||||
<file url="PROJECT" charset="UTF-8" />
|
|
||||||
</component>
|
|
||||||
<component name="ExportToHTMLSettings">
|
|
||||||
<option name="PRINT_LINE_NUMBERS" value="false" />
|
|
||||||
<option name="OPEN_IN_BROWSER" value="false" />
|
|
||||||
<option name="OUTPUT_DIRECTORY" />
|
|
||||||
</component>
|
|
||||||
<component name="ImportConfiguration">
|
|
||||||
<option name="VENDOR" />
|
|
||||||
<option name="RELEASE_TAG" />
|
|
||||||
<option name="LOG_MESSAGE" />
|
|
||||||
<option name="CHECKOUT_AFTER_IMPORT" value="true" />
|
|
||||||
</component>
|
|
||||||
<component name="InspectionProjectProfileManager">
|
|
||||||
<profile version="1.0">
|
|
||||||
<option name="myName" value="Project Default" />
|
|
||||||
</profile>
|
|
||||||
<version value="1.0" />
|
|
||||||
</component>
|
|
||||||
<component name="JUnitGeneratorProjectSettings">
|
|
||||||
<option name="selectedTemplateKey" value="JUnit 4" />
|
|
||||||
<option name="vmTemplates">
|
|
||||||
<map>
|
|
||||||
<entry key="JUnit 3" value="######################################################################################## ## ## Available variables: ## $entryList.methodList - List of method composites ## $entryList.privateMethodList - List of private method composites ## $entryList.fieldList - ArrayList of class scope field names ## $entryList.className - class name ## $entryList.packageName - package name ## $today - Todays date in MM/dd/yyyy format ## ## MethodComposite variables: ## $method.name - Method Name ## $method.signature - Full method signature in String form ## $method.reflectionCode - list of strings representing commented out reflection code to access method (Private Methods) ## $method.paramNames - List of Strings representing the method's parameters' names ## $method.paramClasses - List of Strings representing the method's parameters' classes ## ## You can configure the output class name using "testClass" variable below. ## Here are some examples: ## Test${entry.ClassName} - will produce TestSomeClass ## ${entry.className}Test - will produce SomeClassTest ## ######################################################################################## ## #macro (cap $strIn)$strIn.valueOf($strIn.charAt(0)).toUpperCase()$strIn.substring(1)#end ## Iterate through the list and generate testcase for every entry. #foreach ($entry in $entryList) #set( $testClass="${entry.className}Test") ## package test.$entry.packageName; import junit.framework.Test; import junit.framework.TestSuite; import junit.framework.TestCase; /** * ${entry.className} Tester. * * @author <Authors name> * @since <pre>$today</pre> * @version 1.0 */ public class $testClass extends TestCase { public $testClass(String name) { super(name); } public void setUp() throws Exception { super.setUp(); } public void tearDown() throws Exception { super.tearDown(); } #foreach($method in $entry.methodList) /** * * Method: $method.signature * */ public void test#cap(${method.name})() throws Exception { //TODO: Test goes here... } #end #foreach($method in $entry.privateMethodList) /** * * Method: $method.signature * */ public void test#cap(${method.name})() throws Exception { //TODO: Test goes here... #foreach($string in $method.reflectionCode) $string #end } #end public static Test suite() { return new TestSuite(${testClass}.class); } } #end" />
|
|
||||||
<entry key="JUnit 4" value="######################################################################################## ## ## Available variables: ## $entryList.methodList - List of method composites ## $entryList.privateMethodList - List of private method composites ## $entryList.fieldList - ArrayList of class scope field names ## $entryList.className - class name ## $entryList.packageName - package name ## $today - Todays date in MM/dd/yyyy format ## ## MethodComposite variables: ## $method.name - Method Name ## $method.signature - Full method signature in String form ## $method.reflectionCode - list of strings representing commented out reflection code to access method (Private Methods) ## $method.paramNames - List of Strings representing the method's parameters' names ## $method.paramClasses - List of Strings representing the method's parameters' classes ## ## You can configure the output class name using "testClass" variable below. ## Here are some examples: ## Test${entry.ClassName} - will produce TestSomeClass ## ${entry.className}Test - will produce SomeClassTest ## ######################################################################################## ## #macro (cap $strIn)$strIn.valueOf($strIn.charAt(0)).toUpperCase()$strIn.substring(1)#end ## Iterate through the list and generate testcase for every entry. #foreach ($entry in $entryList) #set( $testClass="${entry.className}Test") ## package $entry.packageName; import org.junit.Test; import org.junit.Before; import org.junit.After; /** * ${entry.className} Tester. * * @author <Authors name> * @since <pre>$date</pre> * @version 1.0 */ public class $testClass { @Before public void before() throws Exception { } @After public void after() throws Exception { } #foreach($method in $entry.methodList) /** * * Method: $method.signature * */ @Test public void test#cap(${method.name})() throws Exception { //TODO: Test goes here... } #end #foreach($method in $entry.privateMethodList) /** * * Method: $method.signature * */ @Test public void test#cap(${method.name})() throws Exception { //TODO: Test goes here... #foreach($string in $method.reflectionCode) $string #end } #end } #end" />
|
|
||||||
</map>
|
|
||||||
</option>
|
|
||||||
</component>
|
|
||||||
<component name="JUnitProjectSettings">
|
|
||||||
<option name="TEST_RUNNER" value="UI" />
|
|
||||||
</component>
|
|
||||||
<component name="JavadocGenerationManager">
|
|
||||||
<option name="OPTION_HIERARCHY" value="false" />
|
|
||||||
<option name="OPTION_NAVIGATOR" value="false" />
|
|
||||||
<option name="OPTION_INDEX" value="false" />
|
|
||||||
<option name="OPTION_SEPARATE_INDEX" value="false" />
|
|
||||||
<option name="OPTION_DOCUMENT_TAG_DEPRECATED" value="false" />
|
|
||||||
<option name="OPTION_DEPRECATED_LIST" value="false" />
|
|
||||||
<option name="OPEN_IN_BROWSER" value="false" />
|
|
||||||
</component>
|
|
||||||
<component name="JikesSettings">
|
|
||||||
<option name="DEBUGGING_INFO" value="true" />
|
|
||||||
<option name="DEPRECATION" value="true" />
|
|
||||||
<option name="GENERATE_NO_WARNINGS" value="false" />
|
|
||||||
<option name="GENERATE_MAKE_FILE_DEPENDENCIES" value="false" />
|
|
||||||
<option name="DO_FULL_DEPENDENCE_CHECK" value="false" />
|
|
||||||
<option name="IS_INCREMENTAL_MODE" value="false" />
|
|
||||||
<option name="IS_EMACS_ERRORS_MODE" value="true" />
|
|
||||||
<option name="ADDITIONAL_OPTIONS_STRING" value="" />
|
|
||||||
<option name="MAXIMUM_HEAP_SIZE" value="128" />
|
|
||||||
</component>
|
|
||||||
<component name="MavenProjectsManager">
|
|
||||||
<option name="originalFiles">
|
|
||||||
<list>
|
|
||||||
<option value="$PROJECT_DIR$/pom.xml" />
|
|
||||||
</list>
|
|
||||||
</option>
|
|
||||||
</component>
|
|
||||||
<component name="Palette2">
|
|
||||||
<group name="Swing">
|
|
||||||
<item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
|
|
||||||
</item>
|
|
||||||
<item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.png" removable="false" auto-create-binding="false" can-attach-label="true">
|
|
||||||
<default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
|
|
||||||
<initial-values>
|
|
||||||
<property name="text" value="Button" />
|
|
||||||
</initial-values>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
|
|
||||||
<initial-values>
|
|
||||||
<property name="text" value="RadioButton" />
|
|
||||||
</initial-values>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
|
|
||||||
<initial-values>
|
|
||||||
<property name="text" value="CheckBox" />
|
|
||||||
</initial-values>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
|
|
||||||
<initial-values>
|
|
||||||
<property name="text" value="Label" />
|
|
||||||
</initial-values>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
|
||||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
|
||||||
<preferred-size width="150" height="-1" />
|
|
||||||
</default-constraints>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
|
||||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
|
||||||
<preferred-size width="150" height="-1" />
|
|
||||||
</default-constraints>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
|
||||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
|
||||||
<preferred-size width="150" height="-1" />
|
|
||||||
</default-constraints>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
|
||||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
|
||||||
<preferred-size width="150" height="50" />
|
|
||||||
</default-constraints>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
|
||||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
|
||||||
<preferred-size width="150" height="50" />
|
|
||||||
</default-constraints>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
|
||||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
|
||||||
<preferred-size width="150" height="50" />
|
|
||||||
</default-constraints>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
|
||||||
<default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
|
||||||
<preferred-size width="150" height="50" />
|
|
||||||
</default-constraints>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
|
|
||||||
<preferred-size width="150" height="50" />
|
|
||||||
</default-constraints>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
|
||||||
<preferred-size width="150" height="50" />
|
|
||||||
</default-constraints>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
|
|
||||||
<preferred-size width="200" height="200" />
|
|
||||||
</default-constraints>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
|
|
||||||
<preferred-size width="200" height="200" />
|
|
||||||
</default-constraints>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
|
||||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
|
|
||||||
<preferred-size width="-1" height="20" />
|
|
||||||
</default-constraints>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
|
|
||||||
</item>
|
|
||||||
</group>
|
|
||||||
</component>
|
|
||||||
<component name="ProjectModuleManager">
|
|
||||||
<modules>
|
|
||||||
<module fileurl="file://$PROJECT_DIR$/disaster_warning.iml" filepath="$PROJECT_DIR$/disaster_warning.iml" />
|
|
||||||
</modules>
|
|
||||||
</component>
|
|
||||||
<component name="ProjectRootManager" version="2" project-jdk-name="1.8" />
|
|
||||||
<component name="RemoteRepositoriesConfiguration">
|
|
||||||
<remote-repository>
|
|
||||||
<option name="id" value="central" />
|
|
||||||
<option name="name" value="Central Repository" />
|
|
||||||
<option name="url" value="https://repo.maven.apache.org/maven2" />
|
|
||||||
</remote-repository>
|
|
||||||
<remote-repository>
|
|
||||||
<option name="id" value="central" />
|
|
||||||
<option name="name" value="Maven Central repository" />
|
|
||||||
<option name="url" value="https://repo1.maven.org/maven2" />
|
|
||||||
</remote-repository>
|
|
||||||
<remote-repository>
|
|
||||||
<option name="id" value="jboss.community" />
|
|
||||||
<option name="name" value="JBoss Community repository" />
|
|
||||||
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
|
|
||||||
</remote-repository>
|
|
||||||
</component>
|
|
||||||
<component name="SwUserDefinedSpecifications">
|
|
||||||
<option name="specTypeByUrl">
|
|
||||||
<map />
|
|
||||||
</option>
|
|
||||||
</component>
|
|
||||||
<component name="VcsDirectoryMappings">
|
|
||||||
<mapping directory="$PROJECT_DIR$/../../.." vcs="Git" />
|
|
||||||
</component>
|
|
||||||
<component name="libraryTable">
|
|
||||||
<library name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.9.8">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-annotations/2.9.8/jackson-annotations-2.9.8.jar!/" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC>
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-annotations/2.9.8/jackson-annotations-2.9.8-javadoc.jar!/" />
|
|
||||||
</JAVADOC>
|
|
||||||
<SOURCES>
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-annotations/2.9.8/jackson-annotations-2.9.8-sources.jar!/" />
|
|
||||||
</SOURCES>
|
|
||||||
</library>
|
|
||||||
<library name="Maven: com.fasterxml.jackson.core:jackson-core:2.9.8">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-core/2.9.8/jackson-core-2.9.8.jar!/" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC>
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-core/2.9.8/jackson-core-2.9.8-javadoc.jar!/" />
|
|
||||||
</JAVADOC>
|
|
||||||
<SOURCES>
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-core/2.9.8/jackson-core-2.9.8-sources.jar!/" />
|
|
||||||
</SOURCES>
|
|
||||||
</library>
|
|
||||||
<library name="Maven: com.fasterxml.jackson.core:jackson-databind:2.9.8">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-databind/2.9.8/jackson-databind-2.9.8.jar!/" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC>
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-databind/2.9.8/jackson-databind-2.9.8-javadoc.jar!/" />
|
|
||||||
</JAVADOC>
|
|
||||||
<SOURCES>
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-databind/2.9.8/jackson-databind-2.9.8-sources.jar!/" />
|
|
||||||
</SOURCES>
|
|
||||||
</library>
|
|
||||||
<library name="Maven: commons-beanutils:commons-beanutils:1.9.3">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/commons-beanutils/commons-beanutils/1.9.3/commons-beanutils-1.9.3.jar!/" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC>
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/commons-beanutils/commons-beanutils/1.9.3/commons-beanutils-1.9.3-javadoc.jar!/" />
|
|
||||||
</JAVADOC>
|
|
||||||
<SOURCES>
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/commons-beanutils/commons-beanutils/1.9.3/commons-beanutils-1.9.3-sources.jar!/" />
|
|
||||||
</SOURCES>
|
|
||||||
</library>
|
|
||||||
<library name="Maven: commons-codec:commons-codec:1.9">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/commons-codec/commons-codec/1.9/commons-codec-1.9.jar!/" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC>
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/commons-codec/commons-codec/1.9/commons-codec-1.9-javadoc.jar!/" />
|
|
||||||
</JAVADOC>
|
|
||||||
<SOURCES>
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/commons-codec/commons-codec/1.9/commons-codec-1.9-sources.jar!/" />
|
|
||||||
</SOURCES>
|
|
||||||
</library>
|
|
||||||
<library name="Maven: commons-collections:commons-collections:3.2.1">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar!/" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC>
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1-javadoc.jar!/" />
|
|
||||||
</JAVADOC>
|
|
||||||
<SOURCES>
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1-sources.jar!/" />
|
|
||||||
</SOURCES>
|
|
||||||
</library>
|
|
||||||
<library name="Maven: commons-lang:commons-lang:2.6">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/commons-lang/commons-lang/2.6/commons-lang-2.6.jar!/" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC>
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/commons-lang/commons-lang/2.6/commons-lang-2.6-javadoc.jar!/" />
|
|
||||||
</JAVADOC>
|
|
||||||
<SOURCES>
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/commons-lang/commons-lang/2.6/commons-lang-2.6-sources.jar!/" />
|
|
||||||
</SOURCES>
|
|
||||||
</library>
|
|
||||||
<library name="Maven: commons-logging:commons-logging:1.1.1">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar!/" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC>
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1-javadoc.jar!/" />
|
|
||||||
</JAVADOC>
|
|
||||||
<SOURCES>
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1-sources.jar!/" />
|
|
||||||
</SOURCES>
|
|
||||||
</library>
|
|
||||||
<library name="Maven: junit:junit:4.4">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/junit/junit/4.4/junit-4.4.jar!/" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC>
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/junit/junit/4.4/junit-4.4-javadoc.jar!/" />
|
|
||||||
</JAVADOC>
|
|
||||||
<SOURCES>
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/junit/junit/4.4/junit-4.4-sources.jar!/" />
|
|
||||||
</SOURCES>
|
|
||||||
</library>
|
|
||||||
<library name="Maven: net.sf.ezmorph:ezmorph:1.0.6">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/net/sf/ezmorph/ezmorph/1.0.6/ezmorph-1.0.6.jar!/" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC>
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/net/sf/ezmorph/ezmorph/1.0.6/ezmorph-1.0.6-javadoc.jar!/" />
|
|
||||||
</JAVADOC>
|
|
||||||
<SOURCES>
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/net/sf/ezmorph/ezmorph/1.0.6/ezmorph-1.0.6-sources.jar!/" />
|
|
||||||
</SOURCES>
|
|
||||||
</library>
|
|
||||||
<library name="Maven: net.sf.json-lib:json-lib:jdk15:2.4">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/net/sf/json-lib/json-lib/2.4/json-lib-2.4-jdk15.jar!/" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC>
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/net/sf/json-lib/json-lib/2.4/json-lib-2.4-javadoc.jar!/" />
|
|
||||||
</JAVADOC>
|
|
||||||
<SOURCES>
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/net/sf/json-lib/json-lib/2.4/json-lib-2.4-sources.jar!/" />
|
|
||||||
</SOURCES>
|
|
||||||
</library>
|
|
||||||
<library name="Maven: org.apache.httpcomponents:httpclient:4.5.2">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpclient/4.5.2/httpclient-4.5.2.jar!/" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC>
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpclient/4.5.2/httpclient-4.5.2-javadoc.jar!/" />
|
|
||||||
</JAVADOC>
|
|
||||||
<SOURCES>
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpclient/4.5.2/httpclient-4.5.2-sources.jar!/" />
|
|
||||||
</SOURCES>
|
|
||||||
</library>
|
|
||||||
<library name="Maven: org.apache.httpcomponents:httpcore:4.4.4">
|
|
||||||
<CLASSES>
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpcore/4.4.4/httpcore-4.4.4.jar!/" />
|
|
||||||
</CLASSES>
|
|
||||||
<JAVADOC>
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpcore/4.4.4/httpcore-4.4.4-javadoc.jar!/" />
|
|
||||||
</JAVADOC>
|
|
||||||
<SOURCES>
|
|
||||||
<root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpcore/4.4.4/httpcore-4.4.4-sources.jar!/" />
|
|
||||||
</SOURCES>
|
|
||||||
</library>
|
|
||||||
</component>
|
|
||||||
</project>
|
|
Binary file not shown.
|
@ -1,92 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
|
||||||
<groupId>com.cpic.xim</groupId>
|
|
||||||
<artifactId>disaster_warning</artifactId>
|
|
||||||
<version>1.0-SNAPSHOT</version>
|
|
||||||
<dependencies>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.apache.httpcomponents</groupId>
|
|
||||||
<artifactId>httpclient</artifactId>
|
|
||||||
<version>4.5.2</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>junit</groupId>
|
|
||||||
<artifactId>junit</artifactId>
|
|
||||||
<version>4.4</version>
|
|
||||||
<scope>test</scope>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>commons-beanutils</groupId>
|
|
||||||
<artifactId>commons-beanutils</artifactId>
|
|
||||||
<version>1.9.3</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>commons-collections</groupId>
|
|
||||||
<artifactId>commons-collections</artifactId>
|
|
||||||
<version>3.2.1</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>commons-lang</groupId>
|
|
||||||
<artifactId>commons-lang</artifactId>
|
|
||||||
<version>2.6</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>commons-logging</groupId>
|
|
||||||
<artifactId>commons-logging</artifactId>
|
|
||||||
<version>1.1.1</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>net.sf.ezmorph</groupId>
|
|
||||||
<artifactId>ezmorph</artifactId>
|
|
||||||
<version>1.0.6</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>net.sf.json-lib</groupId>
|
|
||||||
<artifactId>json-lib</artifactId>
|
|
||||||
<version>2.4</version>
|
|
||||||
<classifier>jdk15</classifier>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>com.fasterxml.jackson.core</groupId>
|
|
||||||
<artifactId>jackson-core</artifactId>
|
|
||||||
<version>2.9.8</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>com.fasterxml.jackson.core</groupId>
|
|
||||||
<artifactId>jackson-databind</artifactId>
|
|
||||||
<version>2.9.8</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>com.fasterxml.jackson.core</groupId>
|
|
||||||
<artifactId>jackson-annotations</artifactId>
|
|
||||||
<version>2.9.8</version>
|
|
||||||
</dependency>
|
|
||||||
</dependencies>
|
|
||||||
<properties>
|
|
||||||
<maven.compiler.source>1.8</maven.compiler.source>
|
|
||||||
<maven.compiler.target>1.8</maven.compiler.target>
|
|
||||||
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
|
|
||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
|
||||||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
|
||||||
</properties>
|
|
||||||
<build>
|
|
||||||
<defaultGoal>compile</defaultGoal>
|
|
||||||
</build>
|
|
||||||
<profiles>
|
|
||||||
<profile>
|
|
||||||
<id>dev</id>
|
|
||||||
<properties></properties>
|
|
||||||
<activation>
|
|
||||||
<activeByDefault>true</activeByDefault>
|
|
||||||
</activation>
|
|
||||||
</profile>
|
|
||||||
<profile>
|
|
||||||
<id>test</id>
|
|
||||||
<properties></properties>
|
|
||||||
<activation>
|
|
||||||
<activeByDefault>false</activeByDefault>
|
|
||||||
</activation>
|
|
||||||
</profile>
|
|
||||||
</profiles>
|
|
||||||
</project>
|
|
|
@ -1,68 +0,0 @@
|
||||||
/*
|
|
||||||
* @Author: Kane
|
|
||||||
* @Date: 2022-03-16 18:10:58
|
|
||||||
* @LastEditors: Kane
|
|
||||||
* @LastEditTime: 2022-03-18 00:37:56
|
|
||||||
* @FilePath: \天气灾害预警\src\main\java\AppMain.java
|
|
||||||
* @Description:
|
|
||||||
*
|
|
||||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
|
||||||
*/
|
|
||||||
|
|
||||||
import com.cpic.xim.config.City;
|
|
||||||
import com.cpic.xim.notify.disaster.QWeatherDisasterWarning;
|
|
||||||
import com.cpic.xim.notify.disaster.WeatherDisasterWarningGrabber;
|
|
||||||
import com.cpic.xim.config.WeatherDisasterNotifyConfig;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.Vector;
|
|
||||||
|
|
||||||
public class AppMain
|
|
||||||
{
|
|
||||||
private static final String CONFIG_FILE_PATH = "./config.json";
|
|
||||||
|
|
||||||
public static void main( String[] args )
|
|
||||||
{
|
|
||||||
String cityCode = "101230201";
|
|
||||||
String json;
|
|
||||||
QWeatherDisasterWarning warning = null;
|
|
||||||
WeatherDisasterNotifyConfig config = null;
|
|
||||||
|
|
||||||
//读取配置
|
|
||||||
try
|
|
||||||
{
|
|
||||||
config = WeatherDisasterNotifyConfig.load( CONFIG_FILE_PATH );
|
|
||||||
}
|
|
||||||
catch ( IOException error )
|
|
||||||
{
|
|
||||||
System.out.println( "读取配置文件失败!" );
|
|
||||||
System.out.println( error.getMessage() );
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Vector<City> cities = config.getCities();
|
|
||||||
String queryURL = config.getQueryUrl();
|
|
||||||
String userKey = config.getKey();
|
|
||||||
|
|
||||||
//遍历所有城市,查询是否有警报,有则推送。
|
|
||||||
for ( City city : cities )
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
json = WeatherDisasterWarningGrabber.getWeatherDisasterWarningJSON( queryURL,
|
|
||||||
userKey,
|
|
||||||
city.getCityCode() );
|
|
||||||
warning = WeatherDisasterWarningGrabber.convertWeatherDisasterWarning( json );
|
|
||||||
|
|
||||||
}
|
|
||||||
catch ( IOException error )
|
|
||||||
{
|
|
||||||
System.out.println( "查询" + city.getCityName() + "出现异常!");
|
|
||||||
System.out.println( error.getMessage() );
|
|
||||||
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,52 +0,0 @@
|
||||||
package com.cpic.xim.config;
|
|
||||||
|
|
||||||
import java.util.Objects;
|
|
||||||
|
|
||||||
public class City
|
|
||||||
{
|
|
||||||
public City() {}
|
|
||||||
|
|
||||||
public String getCityName()
|
|
||||||
{
|
|
||||||
return cityName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setCityName( String cityName )
|
|
||||||
{
|
|
||||||
this.cityName = cityName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getCityCode()
|
|
||||||
{
|
|
||||||
return cityCode;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setCityCode( String cityCode )
|
|
||||||
{
|
|
||||||
this.cityCode = cityCode;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean equals( Object o )
|
|
||||||
{
|
|
||||||
if ( this == o )
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if ( o == null || getClass() != o.getClass() )
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
City city = (City) o;
|
|
||||||
return cityName.equals( city.cityName ) && cityCode.equals( city.cityCode );
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int hashCode()
|
|
||||||
{
|
|
||||||
return Objects.hash( cityName, cityCode );
|
|
||||||
}
|
|
||||||
|
|
||||||
private String cityName;
|
|
||||||
private String cityCode;
|
|
||||||
}
|
|
|
@ -1,52 +0,0 @@
|
||||||
package com.cpic.xim.config;
|
|
||||||
|
|
||||||
import java.util.Objects;
|
|
||||||
|
|
||||||
public class CpicxmStuff
|
|
||||||
{
|
|
||||||
public CpicxmStuff() {};
|
|
||||||
|
|
||||||
public String getStuffName()
|
|
||||||
{
|
|
||||||
return stuffName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setStuffName( String stuffName )
|
|
||||||
{
|
|
||||||
this.stuffName = stuffName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getMobilePhone()
|
|
||||||
{
|
|
||||||
return mobilePhone;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setMobilePhone( String mobilePhone )
|
|
||||||
{
|
|
||||||
this.mobilePhone = mobilePhone;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean equals( Object o )
|
|
||||||
{
|
|
||||||
if ( this == o )
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if ( !( o instanceof CpicxmStuff ) )
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
CpicxmStuff that = (CpicxmStuff) o;
|
|
||||||
return stuffName.equals( that.stuffName ) && mobilePhone.equals( that.mobilePhone );
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int hashCode()
|
|
||||||
{
|
|
||||||
return Objects.hash( stuffName, mobilePhone );
|
|
||||||
}
|
|
||||||
|
|
||||||
private String stuffName;
|
|
||||||
private String mobilePhone;
|
|
||||||
}
|
|
|
@ -1,134 +0,0 @@
|
||||||
package com.cpic.xim.config;
|
|
||||||
|
|
||||||
import java.io.FileReader;
|
|
||||||
import java.io.FileNotFoundException;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.Vector;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
||||||
import com.fasterxml.jackson.databind.PropertyNamingStrategy;
|
|
||||||
|
|
||||||
public class WeatherDisasterNotifyConfig
|
|
||||||
{
|
|
||||||
private static final int BUFFER_SIZE = 1024;
|
|
||||||
|
|
||||||
public static WeatherDisasterNotifyConfig load( String filePath )
|
|
||||||
throws IOException
|
|
||||||
|
|
||||||
{
|
|
||||||
WeatherDisasterNotifyConfig config = null;
|
|
||||||
ObjectMapper mapper = new ObjectMapper();
|
|
||||||
FileReader configFile = null;
|
|
||||||
StringBuffer json = null;
|
|
||||||
char[] buffer = new char[BUFFER_SIZE];
|
|
||||||
|
|
||||||
//设置json属性
|
|
||||||
mapper.setPropertyNamingStrategy( PropertyNamingStrategy.SNAKE_CASE );
|
|
||||||
|
|
||||||
try{
|
|
||||||
configFile = new FileReader( filePath );
|
|
||||||
json = new StringBuffer();
|
|
||||||
|
|
||||||
int length = configFile.read( buffer );
|
|
||||||
|
|
||||||
while ( length != -1 )
|
|
||||||
{
|
|
||||||
json.append( buffer );
|
|
||||||
|
|
||||||
length = configFile.read( buffer );
|
|
||||||
}
|
|
||||||
|
|
||||||
config = mapper.readValue( json.toString(), WeatherDisasterNotifyConfig.class );
|
|
||||||
}
|
|
||||||
finally
|
|
||||||
{
|
|
||||||
if ( configFile != null )
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
configFile.close();
|
|
||||||
}
|
|
||||||
catch ( IOException e )
|
|
||||||
{
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return config;
|
|
||||||
}
|
|
||||||
|
|
||||||
public WeatherDisasterNotifyConfig() {};
|
|
||||||
|
|
||||||
public String getTitle()
|
|
||||||
{
|
|
||||||
return title;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTitle( String title )
|
|
||||||
{
|
|
||||||
this.title = title;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getKey()
|
|
||||||
{
|
|
||||||
return key;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setKey( String key )
|
|
||||||
{
|
|
||||||
this.key = key;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getQueryUrl()
|
|
||||||
{
|
|
||||||
return queryUrl;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setQueryUrl( String queryUrl )
|
|
||||||
{
|
|
||||||
this.queryUrl = queryUrl;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Vector<City> getCities()
|
|
||||||
{
|
|
||||||
return cities;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setCities( Vector<City> cities )
|
|
||||||
{
|
|
||||||
this.cities = cities;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Vector<CpicxmStuff> getNotifyStuffs()
|
|
||||||
{
|
|
||||||
return notifyStuffs;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setNotifyStuffs( Vector<CpicxmStuff> notifyStuffs )
|
|
||||||
{
|
|
||||||
this.notifyStuffs = notifyStuffs;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getWechatOfficalAccountURL()
|
|
||||||
{
|
|
||||||
return wechatOfficalAccountURL;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setWechatOfficalAccountURL( String wechatOfficalAccountURL )
|
|
||||||
{
|
|
||||||
this.wechatOfficalAccountURL = wechatOfficalAccountURL;
|
|
||||||
}
|
|
||||||
|
|
||||||
private String title;
|
|
||||||
private String key;
|
|
||||||
private String queryUrl;
|
|
||||||
|
|
||||||
@JsonProperty("wechat_officalaccount_url")
|
|
||||||
private String wechatOfficalAccountURL;
|
|
||||||
private Vector<City> cities;
|
|
||||||
private Vector<CpicxmStuff> notifyStuffs;
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,52 +0,0 @@
|
||||||
package com.cpic.xim.config.db;
|
|
||||||
|
|
||||||
import java.util.Objects;
|
|
||||||
|
|
||||||
public class DBTable
|
|
||||||
{
|
|
||||||
public DBTable() {}
|
|
||||||
|
|
||||||
public String getTableName()
|
|
||||||
{
|
|
||||||
return tableName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTableName( String tableName )
|
|
||||||
{
|
|
||||||
this.tableName = tableName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getTableDescription()
|
|
||||||
{
|
|
||||||
return tableDescription;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTableDescription( String tableDescription )
|
|
||||||
{
|
|
||||||
this.tableDescription = tableDescription;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean equals( Object o )
|
|
||||||
{
|
|
||||||
if ( this == o )
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if ( !( o instanceof DBTable ) )
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
DBTable dbTable = (DBTable) o;
|
|
||||||
return tableName.equals( dbTable.tableName ) && tableDescription.equals( dbTable.tableDescription );
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int hashCode()
|
|
||||||
{
|
|
||||||
return Objects.hash( tableName, tableDescription );
|
|
||||||
}
|
|
||||||
|
|
||||||
private String tableName;
|
|
||||||
private String tableDescription;
|
|
||||||
}
|
|
|
@ -1,13 +0,0 @@
|
||||||
package com.cpic.xim.config.db;
|
|
||||||
|
|
||||||
import java.util.Vector;
|
|
||||||
|
|
||||||
public class OracleConfig
|
|
||||||
{
|
|
||||||
private String tnsName;
|
|
||||||
private String ipAddr;
|
|
||||||
private String jdbcURL;
|
|
||||||
private String userName;
|
|
||||||
private String password;
|
|
||||||
private Vector<DBTable> tables;
|
|
||||||
}
|
|
|
@ -1,77 +0,0 @@
|
||||||
package com.cpic.xim.notify.disaster;
|
|
||||||
|
|
||||||
import java.util.Vector;
|
|
||||||
|
|
||||||
public class QWeatherDisasterWarning
|
|
||||||
{
|
|
||||||
public QWeatherDisasterWarning( String code,
|
|
||||||
String updateTime,
|
|
||||||
String fxLink,
|
|
||||||
Vector<QWeatherDisasterWarningItem> warning,
|
|
||||||
QWeatherDisasterWarningRefer refer )
|
|
||||||
{
|
|
||||||
this.code = code;
|
|
||||||
this.updateTime = updateTime;
|
|
||||||
this.fxLink = fxLink;
|
|
||||||
this.warning = warning;
|
|
||||||
this.refer = refer;
|
|
||||||
}
|
|
||||||
|
|
||||||
public QWeatherDisasterWarning() {}
|
|
||||||
|
|
||||||
public String getCode()
|
|
||||||
{
|
|
||||||
return code;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setCode( String code )
|
|
||||||
{
|
|
||||||
this.code = code;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getUpdateTime()
|
|
||||||
{
|
|
||||||
return updateTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setUpdateTime( String updateTime )
|
|
||||||
{
|
|
||||||
this.updateTime = updateTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getFxLink()
|
|
||||||
{
|
|
||||||
return fxLink;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setFxLink( String fxLink )
|
|
||||||
{
|
|
||||||
this.fxLink = fxLink;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Vector<QWeatherDisasterWarningItem> getWarning()
|
|
||||||
{
|
|
||||||
return warning;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setWarning( Vector<QWeatherDisasterWarningItem> warning )
|
|
||||||
{
|
|
||||||
this.warning = warning;
|
|
||||||
}
|
|
||||||
|
|
||||||
public QWeatherDisasterWarningRefer getRefer()
|
|
||||||
{
|
|
||||||
return refer;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRefer( QWeatherDisasterWarningRefer refer )
|
|
||||||
{
|
|
||||||
this.refer = refer;
|
|
||||||
}
|
|
||||||
|
|
||||||
private String code;
|
|
||||||
private String updateTime;
|
|
||||||
private String fxLink;
|
|
||||||
private Vector<QWeatherDisasterWarningItem> warning;
|
|
||||||
private QWeatherDisasterWarningRefer refer;
|
|
||||||
}
|
|
|
@ -1,212 +0,0 @@
|
||||||
package com.cpic.xim.notify.disaster;
|
|
||||||
|
|
||||||
import java.util.Objects;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
|
||||||
//import com.fasterxml.jackson.annotation.JsonIgnore;
|
|
||||||
|
|
||||||
public class QWeatherDisasterWarningItem
|
|
||||||
{
|
|
||||||
public QWeatherDisasterWarningItem() {}
|
|
||||||
public QWeatherDisasterWarningItem( String id,
|
|
||||||
String sender,
|
|
||||||
String pubTime,
|
|
||||||
String title,
|
|
||||||
String status,
|
|
||||||
String level,
|
|
||||||
String type,
|
|
||||||
String typeName,
|
|
||||||
String text,
|
|
||||||
String related,
|
|
||||||
String urgency, String certainty )
|
|
||||||
{
|
|
||||||
this.id = id;
|
|
||||||
this.sender = sender;
|
|
||||||
this.pubTime = pubTime;
|
|
||||||
this.title = title;
|
|
||||||
this.status = status;
|
|
||||||
this.level = level;
|
|
||||||
this.type = type;
|
|
||||||
this.typeName = typeName;
|
|
||||||
this.text = text;
|
|
||||||
this.related = related;
|
|
||||||
this.urgency = urgency;
|
|
||||||
this.certainty = certainty;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean equals( Object o )
|
|
||||||
{
|
|
||||||
if ( this == o )
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if ( o == null || getClass() != o.getClass() )
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
QWeatherDisasterWarningItem that = (QWeatherDisasterWarningItem) o;
|
|
||||||
return id.equals( that.id ) && Objects.equals( sender, that.sender ) && Objects.equals( pubTime,
|
|
||||||
that.pubTime ) && Objects.equals(
|
|
||||||
title,
|
|
||||||
that.title ) && Objects.equals( status, that.status ) && Objects.equals( level,
|
|
||||||
that.level ) && Objects.equals(
|
|
||||||
type,
|
|
||||||
that.type ) && Objects.equals( typeName, that.typeName ) && Objects.equals( text,
|
|
||||||
that.text ) && Objects.equals(
|
|
||||||
related,
|
|
||||||
that.related ) && Objects.equals( urgency, that.urgency ) && Objects.equals( certainty,
|
|
||||||
that.certainty );
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int hashCode()
|
|
||||||
{
|
|
||||||
return Objects.hash( id,
|
|
||||||
sender,
|
|
||||||
pubTime,
|
|
||||||
title,
|
|
||||||
status,
|
|
||||||
level,
|
|
||||||
type,
|
|
||||||
typeName,
|
|
||||||
text,
|
|
||||||
related,
|
|
||||||
urgency,
|
|
||||||
certainty );
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getId()
|
|
||||||
{
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setId( String id )
|
|
||||||
{
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getSender()
|
|
||||||
{
|
|
||||||
return sender;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSender( String sender )
|
|
||||||
{
|
|
||||||
this.sender = sender;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getPubTime()
|
|
||||||
{
|
|
||||||
return pubTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPubTime( String pubTime )
|
|
||||||
{
|
|
||||||
this.pubTime = pubTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getTitle()
|
|
||||||
{
|
|
||||||
return title;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTitle( String title )
|
|
||||||
{
|
|
||||||
this.title = title;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getStatus()
|
|
||||||
{
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setStatus( String status )
|
|
||||||
{
|
|
||||||
this.status = status;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getLevel()
|
|
||||||
{
|
|
||||||
return level;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setLevel( String level )
|
|
||||||
{
|
|
||||||
this.level = level;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getType()
|
|
||||||
{
|
|
||||||
return type;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setType( String type )
|
|
||||||
{
|
|
||||||
this.type = type;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getTypeName()
|
|
||||||
{
|
|
||||||
return typeName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTypeName( String typeName )
|
|
||||||
{
|
|
||||||
this.typeName = typeName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getText()
|
|
||||||
{
|
|
||||||
return text;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setText( String text )
|
|
||||||
{
|
|
||||||
this.text = text;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getRelated()
|
|
||||||
{
|
|
||||||
return related;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRelated( String related )
|
|
||||||
{
|
|
||||||
this.related = related;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getUrgency()
|
|
||||||
{
|
|
||||||
return urgency;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setUrgency( String urgency )
|
|
||||||
{
|
|
||||||
this.urgency = urgency;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getCertainty()
|
|
||||||
{
|
|
||||||
return certainty;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setCertainty( String certainty )
|
|
||||||
{
|
|
||||||
this.certainty = certainty;
|
|
||||||
}
|
|
||||||
|
|
||||||
private String id;
|
|
||||||
private String sender;
|
|
||||||
@JsonFormat(pattern="yyyy-MM-dd'T'HH:mm")
|
|
||||||
private String pubTime;
|
|
||||||
private String title;
|
|
||||||
private String status;
|
|
||||||
private String level;
|
|
||||||
private String type;
|
|
||||||
private String typeName;
|
|
||||||
private String text;
|
|
||||||
private String related;
|
|
||||||
private String urgency;
|
|
||||||
private String certainty;
|
|
||||||
}
|
|
|
@ -1,41 +0,0 @@
|
||||||
/*
|
|
||||||
* @Author: Kane
|
|
||||||
* @Date: 2022-03-17 21:08:09
|
|
||||||
* @LastEditors: Kane
|
|
||||||
* @LastEditTime: 2022-03-18 00:30:53
|
|
||||||
* @FilePath: \天气灾害预警\src\main\java\com\cpic\xim\disaster_warning\QWeatherDisasterWarningRefer.java
|
|
||||||
* @Description:
|
|
||||||
*
|
|
||||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
|
||||||
*/
|
|
||||||
package com.cpic.xim.notify.disaster;
|
|
||||||
|
|
||||||
//import java.util.Objects;
|
|
||||||
|
|
||||||
public class QWeatherDisasterWarningRefer
|
|
||||||
{
|
|
||||||
public QWeatherDisasterWarningRefer() {}
|
|
||||||
|
|
||||||
public String[] getSources()
|
|
||||||
{
|
|
||||||
return sources;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSources( String[] sources )
|
|
||||||
{
|
|
||||||
this.sources = sources;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String[] getLicense()
|
|
||||||
{
|
|
||||||
return license;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setLicense( String[] license )
|
|
||||||
{
|
|
||||||
this.license = license;
|
|
||||||
}
|
|
||||||
|
|
||||||
private String[] sources;
|
|
||||||
private String[] license;
|
|
||||||
}
|
|
|
@ -1,131 +0,0 @@
|
||||||
/**
|
|
||||||
* @author 王炜
|
|
||||||
* @version 1.0
|
|
||||||
*/
|
|
||||||
package com.cpic.xim.notify.disaster;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.io.InputStreamReader;
|
|
||||||
import java.io.BufferedReader;
|
|
||||||
|
|
||||||
import java.net.MalformedURLException;
|
|
||||||
import java.net.URL;
|
|
||||||
import java.net.HttpURLConnection;
|
|
||||||
import java.util.zip.GZIPInputStream;
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public class WeatherDisasterWarningGrabber
|
|
||||||
{
|
|
||||||
/***
|
|
||||||
* 从和风天气获取天气警报json字符串
|
|
||||||
* @param cityCode 城市或区域代码
|
|
||||||
* @return 返回警报的json字符串
|
|
||||||
*/
|
|
||||||
public static String getWeatherDisasterWarningJSON( String queryURL,
|
|
||||||
String userKey,
|
|
||||||
String cityCode )
|
|
||||||
{
|
|
||||||
//拼接url字符串
|
|
||||||
String json = "";
|
|
||||||
String requestURL = queryURL + "key=" + userKey + "&location=" + cityCode;
|
|
||||||
|
|
||||||
//链接用
|
|
||||||
HttpURLConnection connection = null;
|
|
||||||
URL url = null;
|
|
||||||
InputStream inputStream = null;
|
|
||||||
BufferedReader bufferedReader = null;
|
|
||||||
StringBuilder buffer = new StringBuilder();
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
url = new URL( requestURL );
|
|
||||||
connection = (HttpURLConnection) url.openConnection();
|
|
||||||
|
|
||||||
connection.setRequestMethod( "GET" );
|
|
||||||
connection.setConnectTimeout( 15000 );
|
|
||||||
connection.setReadTimeout( 60000 );
|
|
||||||
connection.connect();
|
|
||||||
|
|
||||||
//如果responseCode为200,说明访问成功!
|
|
||||||
if ( connection.getResponseCode() == 200 )
|
|
||||||
{
|
|
||||||
//注意,和风使用了gzip压缩响应体
|
|
||||||
inputStream = new GZIPInputStream( connection.getInputStream() );
|
|
||||||
bufferedReader = new BufferedReader( new InputStreamReader( inputStream, "UTF-8" ) );
|
|
||||||
|
|
||||||
//读出数据
|
|
||||||
String temp = bufferedReader.readLine();
|
|
||||||
|
|
||||||
while ( temp != null )
|
|
||||||
{
|
|
||||||
buffer.append( temp );
|
|
||||||
|
|
||||||
temp = bufferedReader.readLine();
|
|
||||||
}
|
|
||||||
|
|
||||||
json = buffer.toString();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch ( MalformedURLException error )
|
|
||||||
{
|
|
||||||
error.printStackTrace();
|
|
||||||
}
|
|
||||||
catch ( IOException error )
|
|
||||||
{
|
|
||||||
System.out.println( "读取失败!" );
|
|
||||||
}
|
|
||||||
finally
|
|
||||||
{
|
|
||||||
if ( bufferedReader != null )
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
bufferedReader.close();
|
|
||||||
}
|
|
||||||
catch ( IOException error )
|
|
||||||
{
|
|
||||||
error.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( inputStream != null )
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
inputStream.close();
|
|
||||||
}
|
|
||||||
catch ( IOException error )
|
|
||||||
{
|
|
||||||
error.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( connection != null )
|
|
||||||
{
|
|
||||||
connection.disconnect();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return json;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 将天气警告的json字符串转换成java对象。
|
|
||||||
* @param json json字符串
|
|
||||||
* @return 返回 QWeatherDisasterWarning 对象。
|
|
||||||
* @throws IOException
|
|
||||||
*/
|
|
||||||
public static QWeatherDisasterWarning convertWeatherDisasterWarning( String json )
|
|
||||||
throws IOException
|
|
||||||
{
|
|
||||||
ObjectMapper mapper = new ObjectMapper();
|
|
||||||
QWeatherDisasterWarning warning = mapper.readValue( json, QWeatherDisasterWarning.class );
|
|
||||||
|
|
||||||
return warning;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,299 +0,0 @@
|
||||||
|
|
||||||
package com.cpic.xim.wechat.officalAccount;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
||||||
|
|
||||||
import java.io.*;
|
|
||||||
|
|
||||||
|
|
||||||
import java.net.URL;
|
|
||||||
import java.net.HttpURLConnection;
|
|
||||||
import java.nio.charset.StandardCharsets;
|
|
||||||
|
|
||||||
|
|
||||||
public class sendMessage
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 向公众号推送通知消息。接口文档参考 彭奕洁 编写《消息发送接口调用文档》
|
|
||||||
*
|
|
||||||
* @param wechatOfficalAccountURL 公众号接口网址。
|
|
||||||
* @param title 通知的标题。
|
|
||||||
* @param notifyType 通知类型。
|
|
||||||
* @param notifyMessage 通知文本内容。
|
|
||||||
*/
|
|
||||||
public static void sendNotifyMessage( String wechatOfficalAccountURL,
|
|
||||||
String title,
|
|
||||||
String notifyType,
|
|
||||||
String notifyMessage )
|
|
||||||
|
|
||||||
{
|
|
||||||
//设置推送内容
|
|
||||||
WechatOfficalAccountMessageParameter param = new WechatOfficalAccountMessageParameter();
|
|
||||||
|
|
||||||
param.setFirst( title );
|
|
||||||
param.setKeyword1( notifyType );
|
|
||||||
param.setKeyword1Color( "#ff0000" );
|
|
||||||
param.setKeyword2( notifyMessage );
|
|
||||||
|
|
||||||
//转换成json
|
|
||||||
ObjectMapper mapper;
|
|
||||||
String json = null;
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
mapper = new ObjectMapper();
|
|
||||||
mapper.setSerializationInclusion( JsonInclude.Include.NON_NULL );
|
|
||||||
|
|
||||||
json = mapper.writeValueAsString( param );
|
|
||||||
|
|
||||||
if ( json.isEmpty() )
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
System.out.println( json );
|
|
||||||
}
|
|
||||||
catch ( JsonProcessingException error )
|
|
||||||
{
|
|
||||||
error.printStackTrace();
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
//推送数据
|
|
||||||
URL url;
|
|
||||||
HttpURLConnection connection = null;
|
|
||||||
|
|
||||||
StringBuilder result = new StringBuilder();
|
|
||||||
OutputStreamWriter out = null;
|
|
||||||
BufferedReader in = null;
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
url = new URL( wechatOfficalAccountURL );
|
|
||||||
connection = (HttpURLConnection) url.openConnection();
|
|
||||||
|
|
||||||
connection.setRequestMethod( "POST" );
|
|
||||||
connection.setRequestProperty( "accept", "*/*" );
|
|
||||||
connection.setRequestProperty( "Connection", "Keep-Alive" );
|
|
||||||
connection.setRequestProperty( "Content-Type", "application/json" );
|
|
||||||
connection.setDoInput( true );
|
|
||||||
connection.setDoOutput( true );
|
|
||||||
connection.connect();
|
|
||||||
|
|
||||||
out = new OutputStreamWriter( connection.getOutputStream(), StandardCharsets.UTF_8 );
|
|
||||||
out.write( json );
|
|
||||||
out.flush();
|
|
||||||
|
|
||||||
in = new BufferedReader( new InputStreamReader( connection.getInputStream() ) );
|
|
||||||
|
|
||||||
String line = in.readLine();
|
|
||||||
|
|
||||||
while ( line != null )
|
|
||||||
{
|
|
||||||
result.append( line );
|
|
||||||
|
|
||||||
line = in.readLine();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch ( Exception error )
|
|
||||||
{
|
|
||||||
error.printStackTrace();
|
|
||||||
}
|
|
||||||
finally
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
if ( in != null )
|
|
||||||
{
|
|
||||||
in.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( out != null )
|
|
||||||
{
|
|
||||||
out.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( connection != null )
|
|
||||||
{
|
|
||||||
connection.disconnect();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch ( Exception error )
|
|
||||||
{
|
|
||||||
error.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class WechatOfficalAccountMessageParameter
|
|
||||||
{
|
|
||||||
|
|
||||||
WechatOfficalAccountMessageParameter()
|
|
||||||
{
|
|
||||||
tplID = 57;
|
|
||||||
groupID = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
@JsonProperty("tplid")
|
|
||||||
private int tplID;
|
|
||||||
|
|
||||||
@JsonProperty("groupid")
|
|
||||||
private int groupID;
|
|
||||||
|
|
||||||
@JsonProperty("first")
|
|
||||||
private String first;
|
|
||||||
|
|
||||||
@JsonProperty("keyword1")
|
|
||||||
private String keyword1;
|
|
||||||
|
|
||||||
@JsonProperty("keyword1color")
|
|
||||||
private String keyword1Color;
|
|
||||||
|
|
||||||
@JsonProperty("keyword2")
|
|
||||||
private String keyword2;
|
|
||||||
|
|
||||||
@JsonProperty("keyword2color")
|
|
||||||
private String keyword2Color;
|
|
||||||
|
|
||||||
@JsonProperty("remark")
|
|
||||||
private String remark;
|
|
||||||
|
|
||||||
@JsonProperty("remarkcolor")
|
|
||||||
private String remarkColor;
|
|
||||||
|
|
||||||
@JsonProperty("url")
|
|
||||||
private String url;
|
|
||||||
|
|
||||||
@JsonProperty("appid")
|
|
||||||
private String appid;
|
|
||||||
|
|
||||||
@JsonProperty("pagepath")
|
|
||||||
private String pagePath;
|
|
||||||
|
|
||||||
public int getTplID()
|
|
||||||
{
|
|
||||||
return tplID;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTplID( int tplID )
|
|
||||||
{
|
|
||||||
this.tplID = tplID;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getGroupID()
|
|
||||||
{
|
|
||||||
return groupID;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setGroupID( int groupID )
|
|
||||||
{
|
|
||||||
this.groupID = groupID;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getFirst()
|
|
||||||
{
|
|
||||||
return first;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setFirst( String first )
|
|
||||||
{
|
|
||||||
this.first = first;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getKeyword1()
|
|
||||||
{
|
|
||||||
return keyword1;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setKeyword1( String keyword1 )
|
|
||||||
{
|
|
||||||
this.keyword1 = keyword1;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getKeyword1Color()
|
|
||||||
{
|
|
||||||
return keyword1Color;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setKeyword1Color( String keyword1Color )
|
|
||||||
{
|
|
||||||
this.keyword1Color = keyword1Color;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getKeyword2()
|
|
||||||
{
|
|
||||||
return keyword2;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setKeyword2( String keyword2 )
|
|
||||||
{
|
|
||||||
this.keyword2 = keyword2;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getKeyword2Color()
|
|
||||||
{
|
|
||||||
return keyword2Color;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setKeyword2Color( String keyword2Color )
|
|
||||||
{
|
|
||||||
this.keyword2Color = keyword2Color;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getRemark()
|
|
||||||
{
|
|
||||||
return remark;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRemark( String remark )
|
|
||||||
{
|
|
||||||
this.remark = remark;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getRemarkColor()
|
|
||||||
{
|
|
||||||
return remarkColor;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRemarkColor( String remarkColor )
|
|
||||||
{
|
|
||||||
this.remarkColor = remarkColor;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getUrl()
|
|
||||||
{
|
|
||||||
return url;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setUrl( String url )
|
|
||||||
{
|
|
||||||
this.url = url;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getAppid()
|
|
||||||
{
|
|
||||||
return appid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAppid( String appid )
|
|
||||||
{
|
|
||||||
this.appid = appid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getPagePath()
|
|
||||||
{
|
|
||||||
return pagePath;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPagePath( String pagePath )
|
|
||||||
{
|
|
||||||
this.pagePath = pagePath;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,24 +0,0 @@
|
||||||
package com.cpic.xim.wechat.officalAccount;
|
|
||||||
|
|
||||||
import org.junit.Test;
|
|
||||||
|
|
||||||
import static org.junit.Assert.*;
|
|
||||||
|
|
||||||
public class sendMessageTest
|
|
||||||
{
|
|
||||||
@Test
|
|
||||||
public void pushNotifyMessage()
|
|
||||||
{
|
|
||||||
String url = "https://cxxmwx.cpic.com.cn/app/index.php?i=2&c=entry&do=send_group_tpl_api&m=ok_tplmessage";
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
//sendMessage.sendNotifyMessage( url, "警报", "警报标题", "警报内容!" );
|
|
||||||
sendMessage.sendNotifyMessage( url, "警报", "警报标题", "警报内容!" );
|
|
||||||
}
|
|
||||||
catch ( Exception error )
|
|
||||||
{
|
|
||||||
fail("测试失败!");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -3,6 +3,7 @@
|
||||||
"key": "fe9fa8eeeb6f4301a92541eed565dd15",
|
"key": "fe9fa8eeeb6f4301a92541eed565dd15",
|
||||||
"query_url": "https://devapi.qweather.com/v7/warning/now?",
|
"query_url": "https://devapi.qweather.com/v7/warning/now?",
|
||||||
"wechat_officalaccount_url": "https://cxxmwx.cpic.com.cn/app/index.php?i=2&c=entry&do=send_group_tpl_api&m=ok_tplmessage",
|
"wechat_officalaccount_url": "https://cxxmwx.cpic.com.cn/app/index.php?i=2&c=entry&do=send_group_tpl_api&m=ok_tplmessage",
|
||||||
|
"query_interval": 10,
|
||||||
"cities": [
|
"cities": [
|
||||||
{
|
{
|
||||||
"city_name": "厦门",
|
"city_name": "厦门",
|
||||||
|
@ -12,22 +13,6 @@
|
||||||
"city_name": "同安",
|
"city_name": "同安",
|
||||||
"city_code": "101230202"
|
"city_code": "101230202"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"city_name": "思明",
|
|
||||||
"city_code": "101230203"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"city_name": "海沧",
|
|
||||||
"city_code": "101230204"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"city_name": "湖里",
|
|
||||||
"city_code": "101230205"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"city_name": "集美",
|
|
||||||
"city_code": "101230206"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"city_name": "翔安",
|
"city_name": "翔安",
|
||||||
"city_code": "101230207"
|
"city_code": "101230207"
|
|
@ -0,0 +1,14 @@
|
||||||
|
{
|
||||||
|
"tns_name": "xmcx1",
|
||||||
|
"ip_addr": "10.39.0.86",
|
||||||
|
"jdbc_url": "jdbc:oracle:thin:@10.39.0.86:1521:xmcx1",
|
||||||
|
"table_space": "wechat",
|
||||||
|
"user_name": "wechat",
|
||||||
|
"password": "@rn7Q+t5zeyKIZ~s",
|
||||||
|
"tables": [
|
||||||
|
{
|
||||||
|
"table_name": "weather_disaster_notify",
|
||||||
|
"table_description": "天气预警消息表"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,10 @@
|
||||||
|
|
||||||
|
handlers = java.util.logging.ConsoleHandler, java.util.logging.FileHandler
|
||||||
|
|
||||||
|
.level = INFO
|
||||||
|
|
||||||
|
java.util.logging.FileHandler.pattern = ./logs/log_%u.log
|
||||||
|
java.util.logging.FileHandler.limit = 50000
|
||||||
|
java.util.logging.FileHandler.count = 1
|
||||||
|
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
|
||||||
|
java.util.logging.FileHandler.append = true;
|
|
@ -0,0 +1,2 @@
|
||||||
|
java -jar disaster_warning-1.0-SNAPSHOT-jar-with-dependencies.jar
|
||||||
|
pause
|
|
@ -19,5 +19,5 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"refer": { "sources": ["12379"], "license": ["no commercial use"] },
|
"refer": { "sources": ["12379"], "license": ["no commercial use"] },
|
||||||
"testURL": "https://devapi.qweather.com/v7/warning/now?key=fe9fa8eeeb6f4301a92541eed565dd15&location=101230608"
|
"testURL": "https://devapi.qweather.com/v7/warning/now?key=fe9fa8eeeb6f4301a92541eed565dd15&location=101230201"
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue