Browse Source

初始commit

MengyangDuan 4 years ago
parent
commit
732a8b1c87

+ 6 - 0
.idea/encodings.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="Encoding" native2AsciiForPropertiesFiles="true" defaultCharsetForPropertiesFiles="UTF-8">
+    <file url="PROJECT" charset="UTF-8" />
+  </component>
+</project>

+ 13 - 0
.idea/inspectionProfiles/Project_Default.xml

@@ -0,0 +1,13 @@
+<component name="InspectionProjectProfileManager">
+  <profile version="1.0">
+    <option name="myName" value="Project Default" />
+    <inspection_tool class="SerializableHasSerialVersionUIDField" enabled="true" level="ERROR" enabled_by_default="true">
+      <scope name="Project Files" level="ERROR" enabled="true">
+        <option name="ignoreAnonymousInnerClasses" value="false" />
+        <option name="superClassString" value="" />
+      </scope>
+      <option name="ignoreAnonymousInnerClasses" value="false" />
+      <option name="superClassString" value="" />
+    </inspection_tool>
+  </profile>
+</component>

+ 9 - 0
.idea/misc.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectRootManager">
+    <output url="file://$PROJECT_DIR$/out" />
+  </component>
+  <component name="SuppressionsComponent">
+    <option name="suppComments" value="[]" />
+  </component>
+</project>

+ 8 - 0
.idea/modules.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/crowd-private.iml" filepath="$PROJECT_DIR$/crowd-private.iml" />
+    </modules>
+  </component>
+</project>

+ 288 - 0
.idea/qaplug_profiles.xml

@@ -0,0 +1,288 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="AnalysisProjectProfileManager">
+    <option name="PROJECT_PROFILE" value="Project Default" />
+    <option name="USE_PROJECT_LEVEL_SETTINGS" value="false" />
+    <scopes />
+    <profiles>
+      <profile profile_name="Project Default" version="1.0" is_locked="false">
+        <coding_rule class="AndroidCallSuperFirst" level="MAJOR" enabled="false" />
+        <coding_rule class="AndroidCallSuperLast" level="MAJOR" enabled="false" />
+        <coding_rule class="AndroidDoNotHardCodeSDCard" level="MAJOR" enabled="false" />
+        <coding_rule class="BasicAvoidBranchingStatementAsLastInLoop" level="MAJOR" enabled="false" />
+        <coding_rule class="BasicAvoidDecimalLiteralsInBigDecimalConstructor" level="MAJOR" enabled="true" />
+        <coding_rule class="BasicAvoidMultipleUnaryOperators" level="MAJOR" enabled="false" />
+        <coding_rule class="BasicAvoidThreadGroup" level="CRITICAL" enabled="false" />
+        <coding_rule class="BasicAvoidUsingHardCodedIP" level="MAJOR" enabled="false" />
+        <coding_rule class="BasicAvoidUsingOctalValues" level="MAJOR" enabled="false" />
+        <coding_rule class="BasicBigIntegerInstantiation" level="MAJOR" enabled="true" />
+        <coding_rule class="BasicBooleanInstantiation" level="MAJOR" enabled="true" />
+        <coding_rule class="BasicBrokenNullCheck" level="CRITICAL" enabled="true" />
+        <coding_rule class="BasicCheckResultSet" level="MAJOR" enabled="false" />
+        <coding_rule class="BasicCheckSkipResult" level="MAJOR" enabled="false" />
+        <coding_rule class="BasicClassCastExceptionWithToArray" level="MAJOR" enabled="true" />
+        <coding_rule class="BasicCollapsibleIfStatements" level="MINOR" enabled="true" />
+        <coding_rule class="BasicDontCallThreadRun" level="MAJOR" enabled="false" />
+        <coding_rule class="BasicDontUseFloatTypeForLoopIndices" level="MAJOR" enabled="false" />
+        <coding_rule class="BasicDoubleCheckedLocking" level="MAJOR" enabled="false" />
+        <coding_rule class="BasicExtendsObject" level="MAJOR" enabled="false" />
+        <coding_rule class="BasicForLoopShouldBeWhileLoop" level="MINOR" enabled="false" />
+        <coding_rule class="BasicJSFDontNestJsfInJstlIteration" level="MAJOR" enabled="false" />
+        <coding_rule class="BasicJSPIframeMissingSrcAttribute" level="MAJOR" enabled="false" />
+        <coding_rule class="BasicJSPNoClassAttribute" level="MAJOR" enabled="false" />
+        <coding_rule class="BasicJSPNoHtmlComments" level="MAJOR" enabled="false" />
+        <coding_rule class="BasicJSPNoInlineStyleInformation" level="MAJOR" enabled="false" />
+        <coding_rule class="BasicJSPNoJspForward" level="MAJOR" enabled="false" />
+        <coding_rule class="BasicJSPNoLongScripts" level="MAJOR" enabled="false" />
+        <coding_rule class="BasicJSPNoScriptlets" level="MAJOR" enabled="false" />
+        <coding_rule class="BasicJumbledIncrementer" level="MAJOR" enabled="false" />
+        <coding_rule class="BasicMisplacedNullCheck" level="CRITICAL" enabled="false" />
+        <coding_rule class="BasicOverrideBothEqualsAndHashcode" level="CRITICAL" enabled="false" />
+        <coding_rule class="BasicReturnFromFinallyBlock" level="MAJOR" enabled="false" />
+        <coding_rule class="BasicUnconditionalIfStatement" level="CRITICAL" enabled="true" />
+        <coding_rule class="BracesForLoopsMustUseBraces" level="MAJOR" enabled="true" />
+        <coding_rule class="BracesIfElseStmtsMustUseBraces" level="MAJOR" enabled="true" />
+        <coding_rule class="BracesIfStmtsMustUseBraces" level="MAJOR" enabled="true" />
+        <coding_rule class="BracesWhileLoopsMustUseBraces" level="MAJOR" enabled="true" />
+        <coding_rule class="CloneImplementationCloneMethodMustImplementCloneable" level="MAJOR" enabled="false" />
+        <coding_rule class="CloneImplementationCloneThrowsCloneNotSupportedException" level="MAJOR" enabled="true" />
+        <coding_rule class="CloneImplementationProperCloneImplementation" level="CRITICAL" enabled="false" />
+        <coding_rule class="CodeSizeCyclomaticComplexity" level="MAJOR" enabled="false" />
+        <coding_rule class="CodeSizeExcessiveClassLength" level="MAJOR" enabled="false" />
+        <coding_rule class="CodeSizeExcessiveMethodLength" level="MAJOR" enabled="false" />
+        <coding_rule class="CodeSizeExcessiveParameterList" level="MAJOR" enabled="false" />
+        <coding_rule class="CodeSizeExcessivePublicCount" level="MAJOR" enabled="false" />
+        <coding_rule class="CodeSizeNPathComplexity" level="MAJOR" enabled="false" />
+        <coding_rule class="CodeSizeNcssConstructorCount" level="MAJOR" enabled="false" />
+        <coding_rule class="CodeSizeNcssMethodCount" level="MAJOR" enabled="true" />
+        <coding_rule class="CodeSizeNcssTypeCount" level="MAJOR" enabled="true" />
+        <coding_rule class="CodeSizeTooManyFields" level="MAJOR" enabled="false" />
+        <coding_rule class="CodeSizeTooManyMethods" level="MAJOR" enabled="false" />
+        <coding_rule class="ControversialAssignmentInOperand" level="MAJOR" enabled="false" />
+        <coding_rule class="ControversialAtLeastOneConstructor" level="MAJOR" enabled="false" />
+        <coding_rule class="ControversialAvoidAccessibilityAlteration" level="MAJOR" enabled="false" />
+        <coding_rule class="ControversialAvoidFinalLocalVariable" level="MAJOR" enabled="false" />
+        <coding_rule class="ControversialAvoidLiteralsInIfCondition" level="MAJOR" enabled="false" />
+        <coding_rule class="ControversialAvoidPrefixingMethodParameters" level="MAJOR" enabled="false" />
+        <coding_rule class="ControversialAvoidUsingNativeCode" level="MAJOR" enabled="false" />
+        <coding_rule class="ControversialAvoidUsingShortType" level="MAJOR" enabled="false" />
+        <coding_rule class="ControversialAvoidUsingVolatile" level="MAJOR" enabled="false" />
+        <coding_rule class="ControversialBooleanInversion" level="MAJOR" enabled="false" />
+        <coding_rule class="ControversialCallSuperInConstructor" level="MINOR" enabled="false" />
+        <coding_rule class="ControversialDataflowAnomalyAnalysis" level="MAJOR" enabled="false" />
+        <coding_rule class="ControversialDefaultPackage" level="MINOR" enabled="false" />
+        <coding_rule class="ControversialDoNotCallGarbageCollectionExplicitly" level="CRITICAL" enabled="false" />
+        <coding_rule class="ControversialDontImportSun" level="MINOR" enabled="true" />
+        <coding_rule class="ControversialNullAssignment" level="MAJOR" enabled="false" />
+        <coding_rule class="ControversialOneDeclarationPerLine" level="MAJOR" enabled="false" />
+        <coding_rule class="ControversialOnlyOneReturn" level="MINOR" enabled="false" />
+        <coding_rule class="ControversialSuspiciousOctalEscape" level="MAJOR" enabled="false" />
+        <coding_rule class="ControversialUnnecessaryConstructor" level="MAJOR" enabled="false" />
+        <coding_rule class="ControversialUnnecessaryParentheses" level="MINOR" enabled="false" />
+        <coding_rule class="ControversialUseConcurrentHashMap" level="MAJOR" enabled="false" />
+        <coding_rule class="ControversialUseObjectForClearerAPI" level="MAJOR" enabled="false" />
+        <coding_rule class="CouplingCouplingBetweenObjects" level="MAJOR" enabled="false" />
+        <coding_rule class="CouplingExcessiveImports" level="MAJOR" enabled="false" />
+        <coding_rule class="CouplingLawOfDemeter" level="MAJOR" enabled="false" />
+        <coding_rule class="CouplingLooseCoupling" level="MAJOR" enabled="true" />
+        <coding_rule class="CouplingLoosePackageCoupling" level="MAJOR" enabled="false" />
+        <coding_rule class="DesignAbstractClassWithoutAbstractMethod" level="MAJOR" enabled="false" />
+        <coding_rule class="DesignAbstractClassWithoutAnyMethod" level="MAJOR" enabled="false" />
+        <coding_rule class="DesignAccessorClassGeneration" level="MAJOR" enabled="false" />
+        <coding_rule class="DesignAssignmentToNonFinalStatic" level="MAJOR" enabled="false" />
+        <coding_rule class="DesignAvoidConstantsInterface" level="MAJOR" enabled="false" />
+        <coding_rule class="DesignAvoidDeeplyNestedIfStmts" level="MAJOR" enabled="false" />
+        <coding_rule class="DesignAvoidInstanceofChecksInCatchClause" level="MINOR" enabled="true" />
+        <coding_rule class="DesignAvoidProtectedFieldInFinalClass" level="MAJOR" enabled="false" />
+        <coding_rule class="DesignAvoidReassigningParameters" level="MAJOR" enabled="false" />
+        <coding_rule class="DesignAvoidSynchronizedAtMethodLevel" level="MAJOR" enabled="false" />
+        <coding_rule class="DesignBadComparison" level="MAJOR" enabled="false" />
+        <coding_rule class="DesignClassWithOnlyPrivateConstructorsShouldBeFinal" level="MAJOR" enabled="false" />
+        <coding_rule class="DesignCloseResource" level="MAJOR" enabled="true" />
+        <coding_rule class="DesignCompareObjectsWithEquals" level="MAJOR" enabled="true" />
+        <coding_rule class="DesignConfusingTernary" level="MAJOR" enabled="false" />
+        <coding_rule class="DesignConstructorCallsOverridableMethod" level="MAJOR" enabled="true" />
+        <coding_rule class="DesignDefaultLabelNotLastInSwitchStmt" level="MAJOR" enabled="false" />
+        <coding_rule class="DesignEmptyMethodInAbstractClassShouldBeAbstract" level="MAJOR" enabled="false" />
+        <coding_rule class="DesignEqualsNull" level="CRITICAL" enabled="true" />
+        <coding_rule class="DesignFieldDeclarationsShouldBeAtStartOfClass" level="MAJOR" enabled="false" />
+        <coding_rule class="DesignFinalFieldCouldBeStatic" level="MINOR" enabled="true" />
+        <coding_rule class="DesignGodClass" level="MAJOR" enabled="false" />
+        <coding_rule class="DesignIdempotentOperations" level="MAJOR" enabled="true" />
+        <coding_rule class="DesignImmutableField" level="MAJOR" enabled="false" />
+        <coding_rule class="DesignInstantiationToGetClass" level="MAJOR" enabled="true" />
+        <coding_rule class="DesignLogicInversion" level="MAJOR" enabled="false" />
+        <coding_rule class="DesignMissingBreakInSwitch" level="CRITICAL" enabled="false" />
+        <coding_rule class="DesignMissingStaticMethodInNonInstantiatableClass" level="MAJOR" enabled="true" />
+        <coding_rule class="DesignNonCaseLabelInSwitchStatement" level="MAJOR" enabled="false" />
+        <coding_rule class="DesignNonStaticInitializer" level="MAJOR" enabled="false" />
+        <coding_rule class="DesignNonThreadSafeSingleton" level="MAJOR" enabled="false" />
+        <coding_rule class="DesignOptimizableToArrayCall" level="MAJOR" enabled="false" />
+        <coding_rule class="DesignPositionLiteralsFirstInComparisons" level="MAJOR" enabled="false" />
+        <coding_rule class="DesignPreserveStackTrace" level="MAJOR" enabled="true" />
+        <coding_rule class="DesignReturnEmptyArrayRatherThanNull" level="MINOR" enabled="false" />
+        <coding_rule class="DesignSimpleDateFormatNeedsLocale" level="MAJOR" enabled="false" />
+        <coding_rule class="DesignSimplifyBooleanExpressions" level="MAJOR" enabled="false" />
+        <coding_rule class="DesignSimplifyBooleanReturns" level="MINOR" enabled="false" />
+        <coding_rule class="DesignSimplifyConditional" level="MAJOR" enabled="true" />
+        <coding_rule class="DesignSingularField" level="MINOR" enabled="true" />
+        <coding_rule class="DesignSwitchDensity" level="MAJOR" enabled="false" />
+        <coding_rule class="DesignSwitchStmtsShouldHaveDefault" level="MAJOR" enabled="false" />
+        <coding_rule class="DesignTooFewBranchesForASwitchStatement" level="MINOR" enabled="false" />
+        <coding_rule class="DesignUncommentedEmptyConstructor" level="MAJOR" enabled="false" />
+        <coding_rule class="DesignUncommentedEmptyMethod" level="MAJOR" enabled="false" />
+        <coding_rule class="DesignUnnecessaryLocalBeforeReturn" level="MAJOR" enabled="true" />
+        <coding_rule class="DesignUnsynchronizedStaticDateFormatter" level="MAJOR" enabled="false" />
+        <coding_rule class="DesignUseCollectionIsEmpty" level="MINOR" enabled="false" />
+        <coding_rule class="DesignUseLocaleWithCaseConversions" level="MAJOR" enabled="false" />
+        <coding_rule class="DesignUseNotifyAllInsteadOfNotify" level="MAJOR" enabled="false" />
+        <coding_rule class="DesignUseSingleton" level="MAJOR" enabled="false" />
+        <coding_rule class="DesignUseVarargs" level="MAJOR" enabled="false" />
+        <coding_rule class="EmptyCodeEmptyCatchBlock" level="CRITICAL" enabled="false" />
+        <coding_rule class="EmptyCodeEmptyFinallyBlock" level="CRITICAL" enabled="true" />
+        <coding_rule class="EmptyCodeEmptyIfStmt" level="CRITICAL" enabled="true" />
+        <coding_rule class="EmptyCodeEmptyInitializer" level="MAJOR" enabled="false" />
+        <coding_rule class="EmptyCodeEmptyStatementBlock" level="MAJOR" enabled="false" />
+        <coding_rule class="EmptyCodeEmptyStatementNotInLoop" level="MAJOR" enabled="false" />
+        <coding_rule class="EmptyCodeEmptyStaticInitializer" level="MAJOR" enabled="true" />
+        <coding_rule class="EmptyCodeEmptySwitchStatements" level="MAJOR" enabled="true" />
+        <coding_rule class="EmptyCodeEmptySynchronizedBlock" level="CRITICAL" enabled="true" />
+        <coding_rule class="EmptyCodeEmptyTryBlock" level="MAJOR" enabled="true" />
+        <coding_rule class="EmptyCodeEmptyWhileStmt" level="CRITICAL" enabled="true" />
+        <coding_rule class="FinalizerAvoidCallingFinalize" level="MAJOR" enabled="true" />
+        <coding_rule class="FinalizerEmptyFinalizer" level="MAJOR" enabled="true" />
+        <coding_rule class="FinalizerFinalizeDoesNotCallSuperFinalize" level="MAJOR" enabled="true" />
+        <coding_rule class="FinalizerFinalizeOnlyCallsSuperFinalize" level="MAJOR" enabled="false" />
+        <coding_rule class="FinalizerFinalizeOverloaded" level="MAJOR" enabled="true" />
+        <coding_rule class="FinalizerFinalizeShouldBeProtected" level="MAJOR" enabled="false" />
+        <coding_rule class="ImportStatementsDontImportJavaLang" level="MINOR" enabled="true" />
+        <coding_rule class="ImportStatementsDuplicateImports" level="MINOR" enabled="false" />
+        <coding_rule class="ImportStatementsImportFromSamePackage" level="MINOR" enabled="false" />
+        <coding_rule class="ImportStatementsTooManyStaticImports" level="MAJOR" enabled="false" />
+        <coding_rule class="ImportStatementsUnusedImports" level="INFO" enabled="false" />
+        <coding_rule class="J2EEDoNotCallSystemExit" level="MAJOR" enabled="false" />
+        <coding_rule class="J2EEDoNotUseThreads" level="MAJOR" enabled="false" />
+        <coding_rule class="J2EELocalHomeNamingConvention" level="MAJOR" enabled="false" />
+        <coding_rule class="J2EELocalInterfaceSessionNamingConvention" level="MAJOR" enabled="false" />
+        <coding_rule class="J2EEMDBAndSessionBeanNamingConvention" level="MAJOR" enabled="false" />
+        <coding_rule class="J2EERemoteInterfaceNamingConvention" level="MAJOR" enabled="false" />
+        <coding_rule class="J2EERemoteSessionInterfaceNamingConvention" level="MAJOR" enabled="false" />
+        <coding_rule class="J2EEStaticEJBFieldShouldBeFinal" level="MAJOR" enabled="false" />
+        <coding_rule class="J2EEUseProperClassLoader" level="CRITICAL" enabled="false" />
+        <coding_rule class="JUnitJUnitAssertionsShouldIncludeMessage" level="MAJOR" enabled="false" />
+        <coding_rule class="JUnitJUnitSpelling" level="MAJOR" enabled="false" />
+        <coding_rule class="JUnitJUnitStaticSuite" level="MAJOR" enabled="false" />
+        <coding_rule class="JUnitJUnitTestContainsTooManyAsserts" level="MAJOR" enabled="false" />
+        <coding_rule class="JUnitJUnitTestsShouldIncludeAssert" level="MAJOR" enabled="false" />
+        <coding_rule class="JUnitSimplifyBooleanAssertion" level="MAJOR" enabled="false" />
+        <coding_rule class="JUnitTestClassWithoutTestCases" level="MAJOR" enabled="false" />
+        <coding_rule class="JUnitUnnecessaryBooleanAssertion" level="MAJOR" enabled="false" />
+        <coding_rule class="JUnitUseAssertEqualsInsteadOfAssertTrue" level="MAJOR" enabled="false" />
+        <coding_rule class="JUnitUseAssertNullInsteadOfAssertTrue" level="MAJOR" enabled="false" />
+        <coding_rule class="JUnitUseAssertSameInsteadOfAssertTrue" level="MAJOR" enabled="false" />
+        <coding_rule class="JUnitUseAssertTrueInsteadOfAssertEquals" level="MAJOR" enabled="false" />
+        <coding_rule class="JakartaCommonsLoggingGuardDebugLogging" level="MAJOR" enabled="false" />
+        <coding_rule class="JakartaCommonsLoggingProperLogger" level="MAJOR" enabled="false" />
+        <coding_rule class="JakartaCommonsLoggingUseCorrectExceptionLogging" level="MAJOR" enabled="true" />
+        <coding_rule class="JavaBeansBeanMembersShouldSerialize" level="MAJOR" enabled="false" />
+        <coding_rule class="JavaBeansMissingSerialVersionUID" level="MAJOR" enabled="false" />
+        <coding_rule class="JavaLoggingAvoidPrintStackTrace" level="MAJOR" enabled="true" />
+        <coding_rule class="JavaLoggingLoggerIsNotStaticFinal" level="MAJOR" enabled="false" />
+        <coding_rule class="JavaLoggingMoreThanOneLogger" level="MAJOR" enabled="false" />
+        <coding_rule class="JavaLoggingSystemPrintln" level="MAJOR" enabled="true" />
+        <coding_rule class="MigrationAvoidAssertAsIdentifier" level="MAJOR" enabled="true" />
+        <coding_rule class="MigrationAvoidEnumAsIdentifier" level="MAJOR" enabled="true" />
+        <coding_rule class="MigrationByteInstantiation" level="MAJOR" enabled="false" />
+        <coding_rule class="MigrationIntegerInstantiation" level="MAJOR" enabled="true" />
+        <coding_rule class="MigrationJUnit4SuitesShouldUseSuiteAnnotation" level="MAJOR" enabled="false" />
+        <coding_rule class="MigrationJUnit4TestShouldUseAfterAnnotation" level="MAJOR" enabled="false" />
+        <coding_rule class="MigrationJUnit4TestShouldUseBeforeAnnotation" level="MAJOR" enabled="false" />
+        <coding_rule class="MigrationJUnit4TestShouldUseTestAnnotation" level="MAJOR" enabled="false" />
+        <coding_rule class="MigrationJUnitUseExpected" level="MAJOR" enabled="false" />
+        <coding_rule class="MigrationLongInstantiation" level="MAJOR" enabled="false" />
+        <coding_rule class="MigrationReplaceEnumerationWithIterator" level="MAJOR" enabled="true" />
+        <coding_rule class="MigrationReplaceHashtableWithMap" level="MAJOR" enabled="true" />
+        <coding_rule class="MigrationReplaceVectorWithList" level="MAJOR" enabled="true" />
+        <coding_rule class="MigrationShortInstantiation" level="MAJOR" enabled="false" />
+        <coding_rule class="NamingAbstractNaming" level="MAJOR" enabled="false" />
+        <coding_rule class="NamingAvoidDollarSigns" level="MINOR" enabled="true" />
+        <coding_rule class="NamingAvoidFieldNameMatchingMethodName" level="MAJOR" enabled="false" />
+        <coding_rule class="NamingAvoidFieldNameMatchingTypeName" level="MAJOR" enabled="false" />
+        <coding_rule class="NamingBooleanGetMethodName" level="MAJOR" enabled="false" />
+        <coding_rule class="NamingClassNamingConventions" level="MAJOR" enabled="true" />
+        <coding_rule class="NamingGenericsNaming" level="MAJOR" enabled="false" />
+        <coding_rule class="NamingLongVariable" level="MAJOR" enabled="false" />
+        <coding_rule class="NamingMethodNamingConventions" level="MAJOR" enabled="false" />
+        <coding_rule class="NamingMethodWithSameNameAsEnclosingClass" level="MAJOR" enabled="true" />
+        <coding_rule class="NamingMisleadingVariableName" level="MAJOR" enabled="false" />
+        <coding_rule class="NamingNoPackage" level="MAJOR" enabled="false" />
+        <coding_rule class="NamingPackageCase" level="MAJOR" enabled="false" />
+        <coding_rule class="NamingShortClassName" level="MAJOR" enabled="false" />
+        <coding_rule class="NamingShortMethodName" level="MAJOR" enabled="false" />
+        <coding_rule class="NamingShortVariable" level="MAJOR" enabled="false" />
+        <coding_rule class="NamingSuspiciousConstantFieldName" level="MAJOR" enabled="true" />
+        <coding_rule class="NamingSuspiciousEqualsMethodName" level="CRITICAL" enabled="true" />
+        <coding_rule class="NamingSuspiciousHashcodeMethodName" level="MAJOR" enabled="true" />
+        <coding_rule class="NamingVariableNamingConventions" level="MAJOR" enabled="false" />
+        <coding_rule class="OptimizationAddEmptyString" level="MAJOR" enabled="false" />
+        <coding_rule class="OptimizationAvoidArrayLoops" level="MAJOR" enabled="true" />
+        <coding_rule class="OptimizationAvoidInstantiatingObjectsInLoops" level="MINOR" enabled="false" />
+        <coding_rule class="OptimizationLocalVariableCouldBeFinal" level="MINOR" enabled="false" />
+        <coding_rule class="OptimizationMethodArgumentCouldBeFinal" level="MINOR" enabled="false" />
+        <coding_rule class="OptimizationPrematureDeclaration" level="MAJOR" enabled="false" />
+        <coding_rule class="OptimizationRedundantFieldInitializer" level="MAJOR" enabled="false" />
+        <coding_rule class="OptimizationSimplifyStartsWith" level="MINOR" enabled="false" />
+        <coding_rule class="OptimizationUnnecessaryWrapperObjectCreation" level="MAJOR" enabled="false" />
+        <coding_rule class="OptimizationUseArrayListInsteadOfVector" level="MAJOR" enabled="true" />
+        <coding_rule class="OptimizationUseArraysAsList" level="MAJOR" enabled="true" />
+        <coding_rule class="OptimizationUseStringBufferForStringAppends" level="MAJOR" enabled="false" />
+        <coding_rule class="SecurityCodeGuidelinesArrayIsStoredDirectly" level="CRITICAL" enabled="true" />
+        <coding_rule class="SecurityCodeGuidelinesMethodReturnsInternalArray" level="CRITICAL" enabled="false" />
+        <coding_rule class="StrictExceptionsAvoidCatchingGenericException" level="MAJOR" enabled="false" />
+        <coding_rule class="StrictExceptionsAvoidCatchingNPE" level="MAJOR" enabled="true" />
+        <coding_rule class="StrictExceptionsAvoidCatchingThrowable" level="CRITICAL" enabled="true" />
+        <coding_rule class="StrictExceptionsAvoidLosingExceptionInformation" level="MAJOR" enabled="false" />
+        <coding_rule class="StrictExceptionsAvoidRethrowingException" level="MAJOR" enabled="true" />
+        <coding_rule class="StrictExceptionsAvoidThrowingNewInstanceOfSameException" level="MAJOR" enabled="false" />
+        <coding_rule class="StrictExceptionsAvoidThrowingNullPointerException" level="MAJOR" enabled="true" />
+        <coding_rule class="StrictExceptionsAvoidThrowingRawExceptionTypes" level="MAJOR" enabled="true" />
+        <coding_rule class="StrictExceptionsDoNotExtendJavaLangError" level="MAJOR" enabled="false" />
+        <coding_rule class="StrictExceptionsDoNotThrowExceptionInFinally" level="MAJOR" enabled="false" />
+        <coding_rule class="StrictExceptionsExceptionAsFlowControl" level="MAJOR" enabled="true" />
+        <coding_rule class="StrictExceptionsSignatureDeclareThrowsException" level="MAJOR" enabled="true" />
+        <coding_rule class="StringandStringBufferAppendCharacterWithChar" level="MINOR" enabled="false" />
+        <coding_rule class="StringandStringBufferAvoidDuplicateLiterals" level="MAJOR" enabled="true" />
+        <coding_rule class="StringandStringBufferAvoidStringBufferField" level="MAJOR" enabled="false" />
+        <coding_rule class="StringandStringBufferConsecutiveLiteralAppends" level="MINOR" enabled="false" />
+        <coding_rule class="StringandStringBufferInefficientEmptyStringCheck" level="MAJOR" enabled="false" />
+        <coding_rule class="StringandStringBufferInefficientStringBuffering" level="MAJOR" enabled="true" />
+        <coding_rule class="StringandStringBufferInsufficientStringBufferDeclaration" level="MAJOR" enabled="false" />
+        <coding_rule class="StringandStringBufferStringBufferInstantiationWithChar" level="MAJOR" enabled="true" />
+        <coding_rule class="StringandStringBufferStringInstantiation" level="MAJOR" enabled="true" />
+        <coding_rule class="StringandStringBufferStringToString" level="MAJOR" enabled="true" />
+        <coding_rule class="StringandStringBufferUnnecessaryCaseChange" level="MINOR" enabled="true" />
+        <coding_rule class="StringandStringBufferUseEqualsToCompareStrings" level="MAJOR" enabled="false" />
+        <coding_rule class="StringandStringBufferUseIndexOfChar" level="MAJOR" enabled="true" />
+        <coding_rule class="StringandStringBufferUseStringBufferLength" level="MINOR" enabled="true" />
+        <coding_rule class="StringandStringBufferUselessStringValueOf" level="MINOR" enabled="true" />
+        <coding_rule class="TypeResolutionCloneMethodMustImplementCloneable" level="MAJOR" enabled="false" />
+        <coding_rule class="TypeResolutionLooseCoupling" level="MAJOR" enabled="true" />
+        <coding_rule class="TypeResolutionSignatureDeclareThrowsException" level="MAJOR" enabled="true" />
+        <coding_rule class="TypeResolutionUnusedImports" level="INFO" enabled="false" />
+        <coding_rule class="UnnecessaryUnnecessaryConversionTemporary" level="MAJOR" enabled="false" />
+        <coding_rule class="UnnecessaryUnnecessaryFinalModifier" level="INFO" enabled="false" />
+        <coding_rule class="UnnecessaryUnnecessaryReturn" level="MINOR" enabled="false" />
+        <coding_rule class="UnnecessaryUnusedNullCheckInEquals" level="MAJOR" enabled="true" />
+        <coding_rule class="UnnecessaryUselessOperationOnImmutable" level="CRITICAL" enabled="true" />
+        <coding_rule class="UnnecessaryUselessOverridingMethod" level="MAJOR" enabled="true" />
+        <coding_rule class="UnnecessaryUselessParentheses" level="MAJOR" enabled="false" />
+        <coding_rule class="UnusedCodeUnusedFormalParameter" level="MAJOR" enabled="true" />
+        <coding_rule class="UnusedCodeUnusedLocalVariable" level="MAJOR" enabled="true" />
+        <coding_rule class="UnusedCodeUnusedModifier" level="MAJOR" enabled="true" />
+        <coding_rule class="UnusedCodeUnusedPrivateField" level="MAJOR" enabled="true" />
+        <coding_rule class="UnusedCodeUnusedPrivateMethod" level="MAJOR" enabled="true" />
+      </profile>
+    </profiles>
+    <list size="0" />
+  </component>
+</project>

+ 6 - 0
.idea/vcs.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="" vcs="Git" />
+  </component>
+</project>

+ 531 - 0
.idea/workspace.xml

@@ -0,0 +1,531 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ChangeListManager">
+    <list default="true" id="41dc853c-f418-44c7-ba5d-2164f3f0373a" name="Default" comment="">
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/business/.env" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/business/docker-compose-crowd.yml" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/business/entity/README.md" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/business/load-crowd-images.sh" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/business/start-containers-multi.sh" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/business/stop-containers-multi.sh" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/shell/oss.sh" />
+    </list>
+    <ignored path="$PROJECT_DIR$/out/" />
+    <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
+    <option name="TRACKING_ENABLED" value="true" />
+    <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="FileEditorManager">
+    <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
+      <file leaf-file-name="start-containers-multi.sh" pinned="false" current-in-tab="true">
+        <entry file="file://$PROJECT_DIR$/business/start-containers-multi.sh">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="60">
+              <caret line="4" column="48" lean-forward="false" selection-start-line="4" selection-start-column="48" selection-end-line="4" selection-end-column="48" />
+              <folding />
+            </state>
+          </provider>
+        </entry>
+      </file>
+    </leaf>
+  </component>
+  <component name="FileTemplateManagerImpl">
+    <option name="RECENT_TEMPLATES">
+      <list>
+        <option value="FxmlFile" />
+      </list>
+    </option>
+  </component>
+  <component name="Git.Settings">
+    <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
+  </component>
+  <component name="GradleLocalSettings">
+    <option name="externalProjectsViewState">
+      <projects_view />
+    </option>
+  </component>
+  <component name="IdeDocumentHistory">
+    <option name="CHANGED_PATHS">
+      <list>
+        <option value="$PROJECT_DIR$/pipeline" />
+        <option value="$PROJECT_DIR$/pipeline.sh" />
+        <option value="$PROJECT_DIR$/entity/README.md" />
+        <option value="$PROJECT_DIR$/business/stop-containers-multi.sh" />
+        <option value="$PROJECT_DIR$/start-containers-multi.sh" />
+        <option value="$PROJECT_DIR$/business/load-crowd-images.sh" />
+      </list>
+    </option>
+  </component>
+  <component name="JsBuildToolGruntFileManager" detection-done="true" sorting="DEFINITION_ORDER" />
+  <component name="JsBuildToolPackageJson" detection-done="true" sorting="DEFINITION_ORDER" />
+  <component name="JsFlowSettings">
+    <service-enabled>true</service-enabled>
+    <exe-path />
+    <annotation-enable>false</annotation-enable>
+    <other-services-enabled>true</other-services-enabled>
+    <auto-save>true</auto-save>
+  </component>
+  <component name="JsGulpfileManager">
+    <detection-done>true</detection-done>
+    <sorting>DEFINITION_ORDER</sorting>
+  </component>
+  <component name="MavenImportPreferences">
+    <option name="generalSettings">
+      <MavenGeneralSettings>
+        <option name="mavenHome" value="$USER_HOME$/apache-maven-3.5.2" />
+      </MavenGeneralSettings>
+    </option>
+    <option name="importingSettings">
+      <MavenImportingSettings>
+        <option name="downloadDocsAutomatically" value="true" />
+        <option name="downloadSourcesAutomatically" value="true" />
+      </MavenImportingSettings>
+    </option>
+  </component>
+  <component name="PhpServers">
+    <servers />
+  </component>
+  <component name="PhpWorkspaceProjectConfiguration" backward_compatibility_performed="true" />
+  <component name="ProjectFrameBounds" extendedState="6" fullScreen="true">
+    <option name="y" value="23" />
+    <option name="width" value="1440" />
+    <option name="height" value="797" />
+  </component>
+  <component name="ProjectInspectionProfilesVisibleTreeState">
+    <entry key="Project Default">
+      <profile-state>
+        <expanded-state>
+          <State>
+            <id />
+          </State>
+          <State>
+            <id>Abstraction issuesJava</id>
+          </State>
+          <State>
+            <id>Control flow issuesJava</id>
+          </State>
+          <State>
+            <id>Google Web Toolkit issues</id>
+          </State>
+          <State>
+            <id>Java</id>
+          </State>
+          <State>
+            <id>Logging issuesJava</id>
+          </State>
+          <State>
+            <id>Memory issuesJava</id>
+          </State>
+          <State>
+            <id>Security issuesJava</id>
+          </State>
+          <State>
+            <id>Serialization issuesJava</id>
+          </State>
+        </expanded-state>
+        <selected-state>
+          <State>
+            <id>SerializableHasSerialVersionUIDField</id>
+          </State>
+        </selected-state>
+      </profile-state>
+    </entry>
+  </component>
+  <component name="ProjectView">
+    <navigator currentView="ProjectPane" proportions="" version="1">
+      <flattenPackages />
+      <showMembers />
+      <showModules />
+      <showLibraryContents />
+      <hideEmptyPackages />
+      <abbreviatePackageNames />
+      <autoscrollToSource />
+      <autoscrollFromSource />
+      <sortByType />
+      <manualOrder />
+      <foldersAlwaysOnTop value="true" />
+    </navigator>
+    <panes>
+      <pane id="ProjectPane">
+        <subPane>
+          <expand>
+            <path>
+              <item name="crowd-private" type="b2602c69:ProjectViewProjectNode" />
+              <item name="crowd-private" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="crowd-private" type="b2602c69:ProjectViewProjectNode" />
+              <item name="crowd-private" type="462c0819:PsiDirectoryNode" />
+              <item name="business" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="crowd-private" type="b2602c69:ProjectViewProjectNode" />
+              <item name="crowd-private" type="462c0819:PsiDirectoryNode" />
+              <item name="business" type="462c0819:PsiDirectoryNode" />
+              <item name="entity" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="crowd-private" type="b2602c69:ProjectViewProjectNode" />
+              <item name="crowd-private" type="462c0819:PsiDirectoryNode" />
+              <item name="shell" type="462c0819:PsiDirectoryNode" />
+            </path>
+          </expand>
+          <select />
+        </subPane>
+      </pane>
+      <pane id="Scope" />
+      <pane id="Scratches" />
+      <pane id="PackagesPane" />
+      <pane id="AndroidView" />
+    </panes>
+  </component>
+  <component name="PropertiesComponent">
+    <property name="settings.editor.selected.configurable" value="Errors" />
+    <property name="project.structure.last.edited" value="SDKs" />
+    <property name="project.structure.proportion" value="0.15" />
+    <property name="project.structure.side.proportion" value="0.2" />
+    <property name="nodejs_interpreter_path" value="/usr/local/bin/node" />
+    <property name="WebServerToolWindowFactoryState" value="false" />
+    <property name="aspect.path.notification.shown" value="true" />
+  </component>
+  <component name="RecentsManager">
+    <key name="MoveFile.RECENT_KEYS">
+      <recent name="$PROJECT_DIR$/business" />
+    </key>
+    <key name="CopyFile.RECENT_KEYS">
+      <recent name="$PROJECT_DIR$/business" />
+      <recent name="$PROJECT_DIR$" />
+      <recent name="$PROJECT_DIR$/shell" />
+      <recent name="$PROJECT_DIR$/entity" />
+    </key>
+  </component>
+  <component name="RunDashboard">
+    <option name="ruleStates">
+      <list>
+        <RuleState>
+          <option name="name" value="ConfigurationTypeDashboardGroupingRule" />
+        </RuleState>
+        <RuleState>
+          <option name="name" value="StatusDashboardGroupingRule" />
+        </RuleState>
+      </list>
+    </option>
+  </component>
+  <component name="RunManager">
+    <configuration default="true" type="Applet" factoryName="Applet">
+      <option name="HTML_USED" value="false" />
+      <option name="WIDTH" value="400" />
+      <option name="HEIGHT" value="300" />
+      <option name="POLICY_FILE" value="$APPLICATION_HOME_DIR$/bin/appletviewer.policy" />
+      <module />
+    </configuration>
+    <configuration default="true" type="Application" factoryName="Application">
+      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
+      <option name="MAIN_CLASS_NAME" />
+      <option name="VM_PARAMETERS" />
+      <option name="PROGRAM_PARAMETERS" />
+      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
+      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
+      <option name="ALTERNATIVE_JRE_PATH" />
+      <option name="ENABLE_SWING_INSPECTOR" value="false" />
+      <option name="ENV_VARIABLES" />
+      <option name="PASS_PARENT_ENVS" value="true" />
+      <module name="" />
+      <envs />
+    </configuration>
+    <configuration default="true" type="JUnit" factoryName="JUnit">
+      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
+      <module name="" />
+      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
+      <option name="ALTERNATIVE_JRE_PATH" />
+      <option name="PACKAGE_NAME" />
+      <option name="MAIN_CLASS_NAME" />
+      <option name="METHOD_NAME" />
+      <option name="TEST_OBJECT" value="class" />
+      <option name="VM_PARAMETERS" value="-ea" />
+      <option name="PARAMETERS" />
+      <option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
+      <option name="ENV_VARIABLES" />
+      <option name="PASS_PARENT_ENVS" value="true" />
+      <option name="TEST_SEARCH_SCOPE">
+        <value defaultName="singleModule" />
+      </option>
+      <envs />
+      <patterns />
+    </configuration>
+    <configuration default="true" type="#org.jetbrains.idea.devkit.run.PluginConfigurationType" factoryName="Plugin">
+      <module name="" />
+      <option name="VM_PARAMETERS" value="-Xmx512m -Xms256m -XX:MaxPermSize=250m -ea" />
+      <option name="PROGRAM_PARAMETERS" />
+      <predefined_log_file id="idea.log" enabled="true" />
+    </configuration>
+    <configuration default="true" type="Remote" factoryName="Remote">
+      <option name="USE_SOCKET_TRANSPORT" value="true" />
+      <option name="SERVER_MODE" value="false" />
+      <option name="SHMEM_ADDRESS" value="javadebug" />
+      <option name="HOST" value="localhost" />
+      <option name="PORT" value="5005" />
+    </configuration>
+    <configuration default="true" type="TestNG" factoryName="TestNG">
+      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
+      <module name="" />
+      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
+      <option name="ALTERNATIVE_JRE_PATH" />
+      <option name="SUITE_NAME" />
+      <option name="PACKAGE_NAME" />
+      <option name="MAIN_CLASS_NAME" />
+      <option name="METHOD_NAME" />
+      <option name="GROUP_NAME" />
+      <option name="TEST_OBJECT" value="CLASS" />
+      <option name="VM_PARAMETERS" value="-ea" />
+      <option name="PARAMETERS" />
+      <option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
+      <option name="OUTPUT_DIRECTORY" />
+      <option name="ANNOTATION_TYPE" />
+      <option name="ENV_VARIABLES" />
+      <option name="PASS_PARENT_ENVS" value="true" />
+      <option name="TEST_SEARCH_SCOPE">
+        <value defaultName="singleModule" />
+      </option>
+      <option name="USE_DEFAULT_REPORTERS" value="false" />
+      <option name="PROPERTIES_FILE" />
+      <envs />
+      <properties />
+      <listeners />
+    </configuration>
+  </component>
+  <component name="ShelveChangesManager" show_recycled="false">
+    <option name="remove_strategy" value="false" />
+  </component>
+  <component name="SvnConfiguration">
+    <configuration />
+  </component>
+  <component name="TaskManager">
+    <task active="true" id="Default" summary="Default task">
+      <changelist id="41dc853c-f418-44c7-ba5d-2164f3f0373a" name="Default" comment="" />
+      <created>1609748652281</created>
+      <option name="number" value="Default" />
+      <option name="presentableId" value="Default" />
+      <updated>1609748652281</updated>
+      <workItem from="1609748653778" duration="1478000" />
+      <workItem from="1609912656825" duration="1914000" />
+      <workItem from="1610086639770" duration="216000" />
+    </task>
+    <servers />
+  </component>
+  <component name="TimeTrackingManager">
+    <option name="totallyTimeSpent" value="3608000" />
+  </component>
+  <component name="ToolWindowManager">
+    <frame x="0" y="0" width="1440" height="900" extended-state="6" />
+    <editor active="true" />
+    <layout>
+      <window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
+      <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
+      <window_info id="Palette&#9;" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
+      <window_info id="Image Layers" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
+      <window_info id="Capture Analysis" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
+      <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
+      <window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
+      <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
+      <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
+      <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.32889965" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
+      <window_info id="Capture Tool" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
+      <window_info id="Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
+      <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.25679544" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
+      <window_info id="Analysis" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
+      <window_info id="EvoSuite" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
+      <window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
+      <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
+      <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
+      <window_info id="UI Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
+      <window_info id="Theme Preview" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
+      <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
+      <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
+      <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
+      <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
+      <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
+      <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
+      <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
+      <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
+    </layout>
+  </component>
+  <component name="TypeScriptGeneratedFilesManager">
+    <option name="version" value="1" />
+  </component>
+  <component name="UnknownFeatures">
+    <option featureType="com.intellij.fileTypeFactory" implementationName="*.sh" />
+  </component>
+  <component name="VcsContentAnnotationSettings">
+    <option name="myLimit" value="2678400000" />
+  </component>
+  <component name="XDebuggerManager">
+    <breakpoint-manager />
+    <watches-manager />
+  </component>
+  <component name="editorHistoryManager">
+    <entry file="file://$PROJECT_DIR$/crowd-private.iml">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="0">
+          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/crowd-private.iml">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="0">
+          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/pipeline.sh" />
+    <entry file="file://$PROJECT_DIR$/README.md">
+      <provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
+        <state split_layout="SPLIT">
+          <first_editor relative-caret-position="0">
+            <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+          </first_editor>
+          <second_editor />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/.idea/workspace.xml">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="-5435">
+          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/pipeline.sh" />
+    <entry file="file://$PROJECT_DIR$/business/docker-compose-crowd.yml">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="0">
+          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/business/.env">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="-280">
+          <caret line="6" column="0" lean-forward="false" selection-start-line="6" selection-start-column="0" selection-end-line="44" selection-end-column="40" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/business/entity/README.md">
+      <provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
+        <state split_layout="SPLIT">
+          <first_editor relative-caret-position="0">
+            <caret line="0" column="9" lean-forward="false" selection-start-line="0" selection-start-column="9" selection-end-line="0" selection-end-column="9" />
+          </first_editor>
+          <second_editor />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/business/stop-containers-multi.sh">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="0">
+          <caret line="0" column="27" lean-forward="false" selection-start-line="0" selection-start-column="27" selection-end-line="0" selection-end-column="27" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/business/load-crowd-images.sh">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="0">
+          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/shell/oss.sh">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="0">
+          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/crowd-private.iml">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="0">
+          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/business/start-containers-multi.sh">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="60">
+          <caret line="4" column="48" lean-forward="false" selection-start-line="4" selection-start-column="48" selection-end-line="4" selection-end-column="48" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+  </component>
+  <component name="masterDetails">
+    <states>
+      <state key="ArquillianSettingsConfigurable.UI">
+        <settings>
+          <splitter-proportions>
+            <option name="proportions">
+              <list>
+                <option value="0.2" />
+              </list>
+            </option>
+          </splitter-proportions>
+        </settings>
+      </state>
+      <state key="GlobalLibrariesConfigurable.UI">
+        <settings>
+          <splitter-proportions>
+            <option name="proportions">
+              <list>
+                <option value="0.2" />
+              </list>
+            </option>
+          </splitter-proportions>
+        </settings>
+      </state>
+      <state key="JdkListConfigurable.UI">
+        <settings>
+          <last-edited>1.8</last-edited>
+          <splitter-proportions>
+            <option name="proportions">
+              <list>
+                <option value="0.2" />
+              </list>
+            </option>
+          </splitter-proportions>
+        </settings>
+      </state>
+      <state key="ProjectJDKs.UI">
+        <settings>
+          <last-edited>1.8</last-edited>
+          <splitter-proportions>
+            <option name="proportions">
+              <list>
+                <option value="0.2" />
+              </list>
+            </option>
+          </splitter-proportions>
+        </settings>
+      </state>
+      <state key="ProjectLibrariesConfigurable.UI">
+        <settings>
+          <splitter-proportions>
+            <option name="proportions">
+              <list>
+                <option value="0.2" />
+              </list>
+            </option>
+          </splitter-proportions>
+        </settings>
+      </state>
+    </states>
+  </component>
+</project>

+ 52 - 0
business/.env

@@ -0,0 +1,52 @@
+## common.env
+## 私有云版本号
+VERSION=2020_12_1
+## 数据文件根目录
+#FILE_STORE_BASE_PATH=/Users/menduo/mooctestProject/mooctest-edu-private-cloud/business
+
+## db.env
+DB_TAG=latest
+DB_STORE_DIR=mysql_data_file
+MYSQL_ROOT_PASSWORD=mooctest_edu
+MYSQL_DATABASE=mooctest
+## mongo.env
+MONGO_STORE_DIR=mongo_data_file
+
+## redis.env
+REDIS_TAG=latest
+
+## rabbitmq.env
+RABBITMQ_DEFAULT_VHOST=dev
+RABBITMQ_DEFAULT_USER=mooctest
+RABBITMQ_DEFAULT_PASS=mooctestPassword 
+
+## celery.env
+CELERY_TAG=latest
+CELERY_LOG_PATH=celeryDocker/logs/dev
+MUTATION_WORKER_TAG=latest
+ONLINEJUDGE_TAG=latest
+## main_site_backend.env
+MAINSITE_BACKEND_TAG=latest
+
+BACKEND_STORE_DIR=TestFileSystem
+
+## main_site_front.env
+MAINSITE_FRONTEND_TAG=latest
+
+FRONTEND_STORE_DIR=TestFileSystem
+
+## webide.env
+MOOCTEST_IP=10.0.0.46
+WEBIDE_ADDRESS=10.0.0.46:83
+## code-visual-mysql
+CODE_VISUAL_DB_TAG=latest
+CODE_VISUAL_DB_STORE_DIR=code_visual_mysql_data_file
+CODE_VISUAL_MYSQL_ROOT_PASSWORD=123456
+CODE_VISUAL_MYSQL_DATABASE=mooctest_user
+
+##crowd.env
+CROWD_TAG=latest
+CROWD_PATH=/home/mooctest/mooctest/business_20_12_1/crowd/crowd
+CROWD_REVIEW_PATH=/home/mooctest/mooctest/business_20_12_1/crowd/mooc_review
+
+

+ 31 - 0
business/docker-compose-crowd.yml

@@ -0,0 +1,31 @@
+version: "2"
+services:
+  mongodb:
+    restart: always
+    container_name: crowd-mongodb
+    image: "crowd-mongo/${VERSION}:${MUTATION_WORKER_TAG}"
+    ports:
+    - 29020:27017
+    volumes:
+    - ${FILE_STORE_BASE_PATH}/crowd-mongo-data:/data/db
+    command: --bind_ip_all
+  crowd:
+    restart: always
+    container_name: crowd
+    image: "crowd:${CROWD_TAG}"
+    ports:
+      - 9007:81
+    volumes:
+      - ${CROWD_PATH}/logs:/back_end/logs
+      - ${CROWD_PATH}/conf:/back_end/conf
+      - ${CROWD_PATH}/deploy.sh:/deploy.sh
+      - ${CROWD_PATH}/data:/Users/hannatao/Downloads
+    command: /bin/bash -c "/etc/init.d/nginx start && cd /back_end && java -jar -Dspring.data.mongodb.uri=mongodb://10.0.0.5:29020/co-enterprise -Dthis.server.ip=10.0.0.5 -DthirdPartTool.mainsite.host=10.0.0.5 -DthirdPartTool.crowdReview.host=10.0.0.5  bug-0.0.1-SNAPSHOT.jar"
+  crowd_review:
+    restart: always
+    container_name: crowd_review
+    image: "crowd_review:${CROWD_TAG}"
+    ports:
+     - 8096:9004
+    volumes:
+     - ${CROWD_REVIEW_PATH}/sgns.wiki.word:/project/sgns.wiki.word

+ 1 - 0
business/entity/README.md

@@ -0,0 +1 @@
+## 存放镜像实体

+ 6 - 0
business/load-crowd-images.sh

@@ -0,0 +1,6 @@
+FILE_STORE_BASE_PATH=$1
+export FILE_STORE_BASE_PATH
+
+docker load < $FILE_STORE_BASE_PATH/entity/crowd-mongodb.tar
+docker load < $FILE_STORE_BASE_PATH/entity/crowd.tar
+docker load < $FILE_STORE_BASE_PATH/entity/crowd_review.tar

+ 5 - 0
business/start-containers-multi.sh

@@ -0,0 +1,5 @@
+FILE_STORE_BASE_PATH=$1
+export FILE_STORE_BASE_PATH
+cd $FILE_STORE_BASE_PATH
+docker-compose -f docker-compose-multi.yml down
+docker-compose -f docker-compose-multi.yml up -d

+ 5 - 0
business/stop-containers-multi.sh

@@ -0,0 +1,5 @@
+# # # 停止当前的docker container
+FILE_STORE_BASE_PATH=$1
+export FILE_STORE_BASE_PATH
+cd $FILE_STORE_BASE_PATH
+docker-compose -f docker-compose-multi.yml down

+ 9 - 0
crowd-private.iml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="WEB_MODULE" version="4">
+  <component name="NewModuleRootManager" inherit-compiler-output="true">
+    <exclude-output />
+    <content url="file://$MODULE_DIR$" />
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>

+ 82 - 0
shell/oss.sh

@@ -0,0 +1,82 @@
+#!/bin/bash
+
+host="oss-cn-shanghai.aliyuncs.com"
+inner_host="oss-cn-shanghai-internal.aliyuncs.com"
+bucket="third-part-tool"
+Id="LTAI4FdrT3HsfdR5edBVN7ws"
+Key="yroxrpm46DzTyzHrLBZzS3MRNIicP6"
+# 参数1,PUT:上传,GET:下载
+method=$1
+# 参数2,上传时为本地源文件路径,下载时为oss源文件路径
+source=$2
+# 参数3,上传时为OSS目标文件路径,下载时为本地目标文件路径
+dest=$3
+
+osshost=$bucket.$inner_host
+#osshost=$bucket.$host
+# 校验method
+if test -z "$method"
+then
+    method=GET
+fi
+
+if [ "${method}"x = "get"x ] || [ "${method}"x = "GET"x ]
+then
+    method=GET
+elif [ "${method}"x = "put"x ] || [ "${method}"x = "PUT"x ]
+then
+    method=PUT
+else
+    method=GET
+fi
+
+#校验上传目标路径
+if test -z "$dest"
+then
+    dest=$source
+fi
+
+echo "method:"$method
+echo "source:"$source
+echo "dest:"$dest
+
+#校验参数是否为空
+if test -z "$method" || test -z "$source" || test -z "$dest"
+then
+    echo $0 put localfile objectname
+    echo $0 get objectname localfile
+    exit -1
+fi
+
+if [ "${method}"x = "PUT"x ]
+then
+    resource="/${bucket}/${dest}"
+    contentType=`file -ib ${source} |awk -F ";" '{print $1}'`
+    dateValue="`TZ=GMT date +'%a, %d %b %Y %H:%M:%S GMT'`"
+    stringToSign="${method}\n\n${contentType}\n${dateValue}\n${resource}"
+    signature=`echo -en $stringToSign | openssl sha1 -hmac ${Key} -binary | base64`
+    echo $stringToSign
+    echo $signature
+    url=http://${osshost}/${dest}
+    echo "upload ${source} to ${url}"
+    curl -i -q -X PUT -T "${source}" \
+      -H "Host: ${osshost}" \
+      -H "Date: ${dateValue}" \
+      -H "Content-Type: ${contentType}" \
+      -H "Authorization: OSS ${Id}:${signature}" \
+      ${url}
+else
+    resource="/${bucket}/${source}"
+    contentType=""
+    dateValue="`TZ=GMT date +'%a, %d %b %Y %H:%M:%S GMT'`"
+    stringToSign="${method}\n\n${contentType}\n${dateValue}\n${resource}"
+    signature=`echo -en ${stringToSign} | openssl sha1 -hmac ${Key} -binary | base64`
+    url=http://${osshost}/${source}
+    echo "download ${url} to ${dest}"
+    curl --create-dirs \
+      -H "Host: ${osshost}" \
+      -H "Date: ${dateValue}" \
+      -H "Content-Type: ${contentType}" \
+      -H "Authorization: OSS ${Id}:${signature}" \
+      ${url} -o ${dest}
+fi