рдЧреЛрдЯреЛ рд░рд┐рдЯрд░реНрди

рдЕрдм рд╣рд░ рдХреЛрдИ рд╕рдордЭрддрд╛ рд╣реИ рдХрд┐ рдЧреЛрдЯреЛ рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХреЗрд╡рд▓ рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рднрдпрд╛рдирдХ рдЕрднреНрдпрд╛рд╕ рд╣реИред рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░ рдмрд╣рд╕ XX рд╕рджреА рдХреЗ 80 рдХреЗ рджрд╢рдХ рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдИ рдФрд░ рдЗрд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЖрдзреБрдирд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рд╕реЗ рдмрд╛рд╣рд░ рд░рдЦрд╛ рдЧрдпрд╛ред рд▓реЗрдХрд┐рди, рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдмреБрд░рд╛рдИ рдХреЗ рд░реВрдк рдореЗрдВ, рд╡рд╣ рдЦреБрдж рдХреЛ рдЫрд┐рдкрд╛рдиреЗ рдФрд░ 21 рд╡реАрдВ рд╕рджреА рдореЗрдВ рдЕрдкрд╡рд╛рджреЛрдВ рдХреА рдЖрдбрд╝ рдореЗрдВ рдкреБрдирд░реНрдЬреАрд╡рд┐рдд рд╣реЛрдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ред


рдЕрдкрд╡рд╛рдж, рдПрдХ рддрд░рдл, рдЖрдзреБрдирд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдПрдХ рдХрд╛рдлреА рд╕рд░рд▓ рдЕрд╡рдзрд╛рд░рдгрд╛ рд╣реИред рджреВрд╕рд░реА рдУрд░, рд╡реЗ рдЕрдХреНрд╕рд░ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдПрдХ рд╕рд░рд▓ рдФрд░ рдкреНрд░рд╕рд┐рджреНрдз рдирд┐рдпрдо рд╣реИ - рдЕрдкрд╡рд╛рдж рдХреЗрд╡рд▓ рдХреНрд╖рддрд┐ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдВред рдФрд░ рдпрд╣ "рдмреНрд░реЗрдХрдбрд╛рдЙрди" рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреА рдмрд╣реБрдд рд╣реА рдвреАрд▓реА рд╡реНрдпрд╛рдЦреНрдпрд╛ рд╣реИ, GOTO рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИред


рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рдЙрджрд╛рд╣рд░рдг


рдмреНрд░реЗрдХрдбрд╛рдЙрди рдФрд░ рдирдХрд╛рд░рд╛рддреНрдордХ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд▓реЙрдЧрд┐рди рд╡рд┐рдВрдбреЛ рдкрд░ рдмрд╣реБрдд рд╕рд░рд▓ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ:


  1. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд▓реЙрдЧрд┐рди / рдкрд╛рд╕рд╡рд░реНрдб рджрд░реНрдЬ рдХрд░рддрд╛ рд╣реИред
  2. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ "рд▓реЙрдЧрд┐рди" рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реИред
  3. рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд░реНрд╡рд░ рдХреЛ рдПрдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬрддрд╛ рд╣реИред
  4. рд╕рд░реНрд╡рд░ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо / рдкрд╛рд╕рд╡рд░реНрдб рдХреА рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ (рд╕рдлрд▓рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдЬреЛрдбрд╝реА рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддрд╛ рд╣реИ)ред
  5. рд╕рд░реНрд╡рд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдЬрд╛рдирдХрд╛рд░реА рднреЗрдЬрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╕рдлрд▓ рдерд╛ рдФрд░ рд╕рдВрдХреНрд░рдордг рдкреГрд╖реНрда рдХрд╛ рд▓рд┐рдВрдХред
  6. рдЧреНрд░рд╛рд╣рдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреГрд╖реНрда рдкрд░ рдЬрд╛рддрд╛ рд╣реИред

рдФрд░ рдПрдХ рдирдХрд╛рд░рд╛рддреНрдордХ рд╡рд┐рд╕реНрддрд╛рд░:


4.1ред рд╕рд░реНрд╡рд░ рдХреЛ рд╕рдВрдмрдВрдзрд┐рдд рд▓реЙрдЧрд┐рди / рдкрд╛рд╕рд╡рд░реНрдб рдЬреЛрдбрд╝реА рдирд╣реАрдВ рдорд┐рд▓реА рдФрд░ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЧреНрд░рд╛рд╣рдХ рдХреЛ рд╕реВрдЪрдирд╛ рднреЗрдЬрддрд╛ рд╣реИред


рдЙрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 4.1 рдПрдХ "рд╕рдорд╕реНрдпрд╛" рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдПрдХ рдЕрдкрд╡рд╛рдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╣ рдХрд╛рдлреА рд╕рд╛рдорд╛рдиреНрдп рдЧрд▓рддреА рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред рд▓реЙрдЧрд┐рди рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдмреЗрдореЗрд▓ рд╣рдорд╛рд░реЗ рдорд╛рдирдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрднрд╡ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдЧреНрд░рд╛рд╣рдХ рдЗрд╕ рд╡рд┐рдХрд╛рд╕ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдпрд╣ рдмреНрд░реЗрдХрдбрд╛рдЙрди рдирд╣реАрдВ рд╣реИ рдФрд░ рдЖрдк рдпрд╣рд╛рдВ рдЕрдкрд╡рд╛рджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред


рдмреНрд░реЗрдХрдбрд╛рдЙрди рд╣реИрдВ: рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рдиреЙрд░реНрде рдХреЗ рдмреАрдЪ рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдбрд┐рд╕рдХрдиреЗрдХреНрд╢рди, рдбреАрдмреАрдПрдордПрд╕ рдХреА рджреБрд░реНрдЧрдорддрд╛, рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЧрд▓рдд рд╕реНрдХреАрдоред рдФрд░ рдПрдХ рд▓рд╛рдЦ рдФрд░ рдХрд╛рд░рдг рдЬреЛ рд╣рдорд╛рд░реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рддреЛрдбрд╝рддреЗ рд╣реИрдВ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИред


рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рдЬрд┐рд╕рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдореИрдВрдиреЗ рднрд╛рдЧ рд▓рд┐рдпрд╛, рдПрдХ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд▓реЙрдЧрдСрди рддрд░реНрдХ рдерд╛ред рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ 3 рдмрд╛рд░ рдЧрд▓рдд рдкрд╛рд╕рд╡рд░реНрдб рджрд░реНрдЬ рдХрд░рдХреЗ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ 15 рдорд┐рдирдЯ рдХреЗ рд▓рд┐рдП рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЕрд╡рд░реБрджреНрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдПрдХ рдЕрд╕реНрдерд╛рдпреА рд▓реЙрдХ рдореЗрдВ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ 3 рдмрд╛рд░ рд╣реЛ рд░рд╣реА рд╣реИ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдПрдХ рд╕реНрдерд╛рдпреА рд▓реЙрдХ рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдирд┐рдпрдо рднреА рдереЗред рдЕрдкрд╡рд╛рдж рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдиреЗ рдирдП рдирд┐рдпрдореЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдмреЗрд╣рдж рдХрдард┐рди рдмрдирд╛ рджрд┐рдпрд╛ рд╣реИред


рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реИ рдФрд░ рдмрд╣реБрдд рджреГрд╢реНрдп рдирд╣реАрдВ рд╣реИред рдЕрдкрд╡рд╛рджреЛрдВ рдкрд░ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдб рдХреИрд╕реЗ рд╕реНрдкрд╖реНрдЯ рдФрд░ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдореИрдВ рдЖрдкрдХреЛ рдПрдХ рдЕрдиреНрдп рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ред


рдЙрджрд╛рд╣рд░рдг рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИ рдЧреБрдг


рдЗрд╕ рдХреЛрдб рдХреЛ рджреЗрдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рдордЭреЗрдВ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИред рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛рдлреА рд╕рд░рд▓ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдмрдбрд╝реА рдирд╣реАрдВ рд╣реИред рдПрдХ рдЕрдЪреНрдЫреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╢реИрд▓реА рдХреЗ рд╕рд╛рде, рдЗрд╕рдХреЗ рд╕рд╛рд░ рдХреА рд╕рдордЭ 2-3 рдорд┐рдирдЯ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП (рдореБрдЭреЗ рдпрд╛рдж рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдЗрд╕ рдХреЛрдб рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭрдиреЗ рдореЗрдВ рдХрд┐рддрдирд╛ рд╕рдордп рд▓рдЧрд╛, рд▓реЗрдХрд┐рди рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ 15 рдорд┐рдирдЯ рд╕реЗ рдЕрдзрд┐рдХ)ред


private WorkspaceProperties(){ Properties loadedProperties = readPropertiesFromFile(WORK_PROPERTIES_PATH, true); //These mappings will replace any mappings that this hashtable had for any of the //keys currently in the specified map. getProperties().putAll( loadedProperties ); //     loadedProperties = readPropertiesFromFile(MY_WORK_PROPERTIES_PATH, false); if (loadedProperties != null){ getProperties().putAll( loadedProperties ); } System.out.println("Loaded properties:" + getProperties()); } /** *  ,    . * @param filepath * @param throwIfNotFound -  FileNotFoundException,     * @return    null,      !throwIfNotFound * @throws FileNotFoundException throwIfNotFound        * @throws IOException     */ private Properties readPropertiesFromFile(String filepath, boolean throwIfNotExists){ Properties loadedProperties = new Properties(); System.out.println("Try loading workspace properties" + filepath); InputStream is = null; InputStreamReader isr = null; try{ int loadingTryLeft = 3; String relativePath = ""; while (loadingTryLeft > 0){ try{ File file = new File(relativePath + filepath); is = new FileInputStream(file); isr = new InputStreamReader( is, "UTF-8"); loadedProperties.load(isr); loadingTryLeft = 0; } catch( FileNotFoundException e) { loadingTryLeft -= 1; if (loadingTryLeft > 0) relativePath += "../"; else throw e; } finally { if (is != null) is.close(); if (isr != null) isr.close(); } } System.out.println("Found file " + filepath); } catch( FileNotFoundException e) { System.out.println("File not found " + filepath); if (throwIfNotExists) throw new RuntimeException("Can`t load workspace properties." + filepath + " not found", e ); }catch (IOException e){ throw new RuntimeException("Can`t read " + filepath, e); } return loadedProperties; } 

рддреЛ, рдЪрд▓рд┐рдП рд░рд╣рд╕реНрдп рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ - рдпрд╣рд╛рдВ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред рджреЛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ WORK_PROPERTIES - рдЖрд╡рд╢реНрдпрдХ WORK_PROPERTIES рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд MY_WORK_PROPERTIES , рд╕рд╛рдорд╛рдиреНрдп рд╕рдВрдкрддреНрддрд┐ рд╕реНрдЯреЛрд░ рдореЗрдВ рдЬреЛрдбрд╝ рд░рд╣реЗ рд╣реИрдВред рдПрдХ рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рд╣реИ - рд╣рдо рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЧреБрдг рдлрд╝рд╛рдЗрд▓ рдХрд╣рд╛рдБ рд╕реНрдерд┐рдд рд╣реИ - рдпрд╣ рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдФрд░ рдкреВрд░реНрд╡рдЬреЛрдВ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ (рддреАрди рд╕реНрддрд░ рддрдХ) рдореЗрдВ рджреЛрдиреЛрдВ рдЭреВрда рдмреЛрд▓ рд╕рдХрддреА рд╣реИред


рдХрдо рд╕реЗ рдХрдо рджреЛ рдЪреАрдЬреЗрдВ рдпрд╣рд╛рдВ рднреНрд░рд╛рдордХ рд╣реИрдВ: throwIfNotExists рдкреИрд░рд╛рдореАрдЯрд░ рдФрд░ рдмрдбрд╝реЗ рд▓реЙрдЬрд┐рдХ рдмреНрд▓реЙрдХ рдЗрди catch FileNotFoundException ред рдпрд╣ рд╕рднреА рдЕрдкрд╛рд░рджрд░реНрд╢реА рд╕рдВрдХреЗрдд - рдЕрдкрд╡рд╛рдж рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ (рд▓реЗрдХрд┐рди рдпрд╣ рдХреИрд╕реЗ рд╕рдордЭрд╛ рдЬрд╛рдП рдХрд┐ рдПрдХ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ, рдПрдХ рдЕрдкрд╡рд╛рдж рдХреЛ рдлреЗрдВрдХрдирд╛ рдПрдХ рд╡рд┐рдлрд▓рддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░реЗ рдореЗрдВ рдирд╣реАрдВ?)ред


рд╕рд╣реА рдЕрдиреБрдмрдВрдз рдХрд░рдирд╛


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, throwIfNotExists ред рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, рдпрд╣ рд╕рдордЭрдирд╛ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓реЛрдВ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рдХрд╣рд╛рдБ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ readPropertiesFromFile рд╡рд┐рдзрд┐ readPropertiesFromFile рддрдп рдирд╣реАрдВ рдХрд░ рд╕рдХрддреА рд╣реИ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ "рдЦрд░рд╛рдм" рдХрдм рд╣реИ рдФрд░ рдпрд╣ "рдЕрдЪреНрдЫрд╛" рдХрдм рд╣реИред рдРрд╕рд╛ рдирд┐рд░реНрдгрдп рдЗрд╕рдХреЗ рдЖрд╣реНрд╡рд╛рди рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рддрдп рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдореМрдЬреВрдж рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдпрд╛ рдирд╣реАрдВред рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдо рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ рдХрд┐ рдлрд╛рдЗрд▓ рд╣реА рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдЙрд╕рдореЗрдВ рд╕реЗ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рдХреЛрдб рд╕реЗ рдкрд╛рд▓рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред


рд╣рдо рдЗрди рджреЛрдиреЛрдВ рдХрдорд┐рдпреЛрдВ рдХреЛ рдареАрдХ рдХрд░рддреЗ рд╣реИрдВ:


 Properties loadedProperties = readPropertiesFromFile(WORK_PROPERTIES_PATH); if (loadedProperties.isEmpty()) { throw new RuntimeException("Can`t load workspace properties"); } loadedProperties = readPropertiesFromFile(MY_WORK_PROPERTIES_PATH); getProperties().putAll( loadedProperties ); 

рдЕрдм рд╢рдмреНрджрд╛рд░реНрде рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ -
WORK_PROPERTIES рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди MY_WORK_PROPERTIES рдирд╣реАрдВ MY_WORK_PROPERTIES ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди, рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ readPropertiesFromFile рдХрднреА рднреА null рдирд╣реАрдВ рд▓реМрдЯ рд╕рдХрддреА рд╣реИ рдФрд░ MY_WORK_PROPERTIES рдкрдврд╝рддреЗ рд╕рдордп рдЗрд╕рдХрд╛ рд▓рд╛рдн рдЙрдард╛ MY_WORK_PROPERTIES ред


рд╣рдо рдмрд┐рдирд╛ рдЯреВрдЯреЗ рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ


рдкрд┐рдЫрд▓реЗ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдиреЗ рднреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдирд╣реАрдВред рдореИрдВрдиреЗ рдЕрднреА-рдЕрднреА throwIfNotExists рджрд┐рдпрд╛ рд╣реИ throwIfNotExists рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ throwIfNotExists :


 if (throwIfNotExists) throw new RuntimeException(тАж); 

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЕрдзрд┐рдХ рдмрд╛рд░реАрдХреА рд╕реЗ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЗ рд▓реЗрдЦрдХ рдХреЗ рддрд░реНрдХ рдХреЛ рд╕рдордЭрдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдЬрд╛рдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╣реИ, рдпрджрд┐ рдирд╣реАрдВ рдорд┐рд▓реА рд╣реИ, рддреЛ рд╣рдо рдЙрдЪреНрдЪ рд╕реНрддрд░ рдкрд░ рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ, рдЖрджрд┐ред рдпрд╛рдиреА рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рдЕрдкрд╡рд╛рдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЪреЗрдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╛рдиреА рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдЕрдкрд╡рд╛рдж рдХреЛ "рдХреБрдЫ рдЯреВрдЯ рдЧрдпрд╛ рд╣реИ" рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реНрдпрд╛рдкрд╛рд░ рддрд░реНрдХ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВред


File.canRead() рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк catch рдореЗрдВ рд╡реНрдпрд╛рдкрд╛рд░рд┐рдХ рддрд░реНрдХ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ catch


  try{ File file = new File(relativePath + filepath); is = new FileInputStream(file); isr = new InputStreamReader( is, "UTF-8"); loadedProperties.load(isr); loadingTryLeft = 0; } catch( FileNotFoundException e) { loadingTryLeft -= 1; if (loadingTryLeft > 0) relativePath += "../"; else throw e; } finally { if (is != null) is.close(); if (isr != null) isr.close(); } } 

рдХреЛрдб рдмрджрд▓рдиреЗ рдкрд░, рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд┐рд▓рддреЗ рд╣реИрдВ:


 private Properties readPropertiesFromFile(String filepath) { Properties loadedProperties = new Properties(); System.out.println("Try loading workspace properties" + filepath); try { int loadingTryLeft = 3; String relativePath = ""; while (loadingTryLeft > 0) { File file = new File(relativePath + filepath); if (file.canRead()) { InputStream is = null; InputStreamReader isr = null; try { is = new FileInputStream(file); isr = new InputStreamReader(is, "UTF-8"); loadedProperties.load(isr); loadingTryLeft = 0; } finally { if (is != null) is.close(); if (isr != null) isr.close(); } } else { loadingTryLeft -= 1; if (loadingTryLeft > 0) { relativePath += "../"; } else { throw new FileNotFoundException(); } } } System.out.println("Found file " + filepath); } catch (FileNotFoundException e) { System.out.println("File not found " + filepath); } catch (IOException e) { throw new RuntimeException("Can`t read " + filepath, e); } return loadedProperties; } 

рдореИрдВрдиреЗ рдЪрд░реЛрдВ рдХреЗ рд╕реНрддрд░ ( isr , isr ) рдХреЛ рдиреНрдпреВрдирддрдо рдЕрдиреБрдордд рдХрд░ рджрд┐рдпрд╛ред


рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рд░рд▓ рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ рд╕реЗ рдХреЛрдб рдХреА рдкрдардиреАрдпрддрд╛ рдореЗрдВ рдХрд╛рдлреА рд╕реБрдзрд╛рд░ рд╣реЛрддрд╛ рд╣реИред рдХреЛрдб рд╕реАрдзреЗ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ (рдпрджрд┐ рдлрд╝рд╛рдЗрд▓ рдореМрдЬреВрдж рд╣реИ, рддреЛ рд╣рдо рдЗрд╕реЗ рдкрдврд╝рддреЗ рд╣реИрдВ, рдЕрдиреНрдпрдерд╛ рд╣рдо рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрдо рдХрд░ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рдКрдкрд░ рджреА рдЧрдИ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рджреЗрдЦрддреЗ рд╣реИрдВ)ред


рдЦреБрд▓рд╛рд╕рд╛ GOTO


рдЕрдЧрд░ рдлрд╝рд╛рдЗрд▓ рдирд╣реАрдВ рдорд┐рд▓реА рддреЛ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:


 } else { loadingTryLeft -= 1; if (loadingTryLeft > 0) { relativePath += "../"; } else { throw new FileNotFoundException(); } } 

рдпрд╣ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдирд┐рд╖реНрдкрд╛рджрди рдЪрдХреНрд░ рдХреЛ рдмрд╛рдзрд┐рдд рдХрд░рдиреЗ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЧреЛрдЯреЛ рдлрд╝рдВрдХреНрд╢рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрд╡рд╛рдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


рд╕рдВрджреЗрд╣рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдФрд░ рдмрджрд▓рд╛рд╡ рдХрд░реЗрдВрдЧреЗред loadingTryLeft = 0 рдореЗрдВ рдПрдХ рдЫреЛрдЯреА рдмреИрд╕рд╛рдЦреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп loadingTryLeft = 0 (рдмреИрд╕рд╛рдЦреА, рдХреНрдпреЛрдВрдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╕рдлрд▓ рдкреНрд░рдпрд╛рд╕ рд╢реЗрд╖ рдкреНрд░рдпрд╛рд╕реЛрдВ loadingTryLeft = 0 рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ loadingTryLeft = 0 рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ), рд╣рдо рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрдврд╝рдиреЗ рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓ рдЬрд╛рддрд╛ рд╣реИ (рд╕рдВрджреЗрд╢ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рднреВрд▓рдХрд░ рднреА)


 try { is = new FileInputStream(file); isr = new InputStreamReader(is, "UTF-8"); loadedProperties.load(isr); System.out.println("Found file " + filepath); return loadedProperties; } finally { 

рдпрд╣ рд╣рдореЗрдВ while (loadingTryLeft > 0) рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ while (loadingTryLeft > 0) while(true) :


 try { int loadingTryLeft = 3; String relativePath = ""; while (true) { File file = new File(relativePath + filepath); if (file.canRead()) { InputStream is = null; InputStreamReader isr = null; try { is = new FileInputStream(file); isr = new InputStreamReader(is, "UTF-8"); loadedProperties.load(isr); System.out.println("Found file " + filepath); return loadedProperties; } finally { if (is != null) is.close(); if (isr != null) isr.close(); } } else { loadingTryLeft -= 1; if (loadingTryLeft > 0) { relativePath += "../"; } else { throw new FileNotFoundException(); // GOTO: FFN } } } } catch (FileNotFoundException e) { // LABEL: FFN System.out.println("File not found " + filepath); } catch (IOException e) { throw new RuntimeException("Can`t read " + filepath, e); } 

рд╕реНрдкрд╖реНрдЯ рдЧрд▓рдд рдЧрдВрдз рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП throw new FileNotFoundException , рдЖрдкрдХреЛ рдлрд╝рдВрдХреНрд╢рди рдЕрдиреБрдмрдВрдз рдХреЛ рдпрд╛рдж рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ред рдХрд┐рд╕реА рднреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдлрд╝рдВрдХреНрд╢рди рдЧреБрдгреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдпрджрд┐ рд╡реЗ рдлрд╝рд╛рдЗрд▓ рдирд╣реАрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ рдЦрд╛рд▓реА рд▓реМрдЯрд╛рдПрдВред рдЗрд╕рд▓рд┐рдП, рдЕрдкрд╡рд╛рдж рдХреЛ рдлреЗрдВрдХрдиреЗ рдФрд░ рдЙрд╕реЗ рдкрдХрдбрд╝рдиреЗ рдХрд╛ рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐ while (loadingTryLeft > 0) рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ:


 private Properties readPropertiesFromFile(String filepath) { Properties loadedProperties = new Properties(); System.out.println("Try loading workspace properties" + filepath); try { int loadingTryLeft = 3; String relativePath = ""; while (loadingTryLeft > 0) { File file = new File(relativePath + filepath); if (file.canRead()) { InputStream is = null; InputStreamReader isr = null; try { is = new FileInputStream(file); isr = new InputStreamReader(is, "UTF-8"); loadedProperties.load(isr); System.out.println("Found file " + filepath); return loadedProperties; } finally { if (is != null) is.close(); if (isr != null) isr.close(); } } else { loadingTryLeft -= 1; if (loadingTryLeft > 0) relativePath += "../"; } } System.out.println("file not found"); } catch (IOException e) { throw new RuntimeException("Can`t read " + filepath, e); } return loadedProperties; } 

рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╣реА рдХрд╛рдо рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рд╕рдм рдХреБрдЫ рдпрд╣рд╛рдВ рд╣реИред IOException рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ RuntimeException рдХреЛ рдлреЗрдВрдХрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрджреЗрд╣ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕реЗ рдЫреЛрдбрд╝ рджреЗрдВрдЧреЗ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП рд╣реИред



рдХреБрдЫ рдЫреЛрдЯреА рдЪреАрдЬреЗрдВ рдмрдЪреА рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рдХреЛрдб рдХреЛ рдФрд░ рднреА рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛ рдФрд░ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ:


  • ReadPropertiesFromFile рд╡рд┐рдзрд┐ рдирд╛рдо рдЗрд╕рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рддрд╛ рд╣реИ (рд╡реИрд╕реЗ, рд╕рд╛рде рд╣реА рдлрд╛рдЗрд▓рдиреЙрдЯрдлрд╝рд╛рдЙрдВрдб рдПрдХреНрд╕рдкреЛрдЬрд╝рд░ рдХреЛ рдлреЗрдВрдХрддрд╛ рд╣реИ)ред рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рддрдЯрд╕реНрде рдФрд░ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╣реИ - loadProperties (...)
  • рд╡рд┐рдзрд┐ рдПрдХ рд╕рд╛рде рдЦреЛрдЬ рдФрд░ рдкрдврд╝рддреА рд╣реИред рдореЗрд░реЗ рд▓рд┐рдП, рдпреЗ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЬрд┐рдореНрдореЗрджрд╛рд░рд┐рдпрд╛рдВ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
  • рдХреЛрдб рдореВрд▓ рд░реВрдк рд╕реЗ рдЬрд╛рд╡рд╛ 6 рдХреЗ рддрд╣рдд рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЕрдм рдЬрд╛рд╡рд╛ 7 рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдХреНрд▓реЛрдЬреЗрдмрд▓ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
  • рдореИрдВ рдЕрдиреБрднрд╡ рд╕реЗ рдЬрд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдЬрдм рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдорд┐рд▓реА рдпрд╛ рдирд╣реАрдВ рдорд┐рд▓реА, рддреЛ рд╕рд╛рдкреЗрдХреНрд╖ рдХреЗ рдмрдЬрд╛рдп рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкреВрд░реНрдг рдкрде рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред
  • if (loadingTryLeft > 0) relativePath += "../"; - рдпрджрд┐ рдЖрдк рдзреНрдпрд╛рди рд╕реЗ рдХреЛрдб рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ - рдпрд╣ рдЪреЗрдХ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ рдЦреЛрдЬ рд╕реАрдорд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддреЛ рдирдП рдореВрд▓реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡реИрд╕реЗ рднреА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдФрд░ рдЕрдЧрд░ рдХреЛрдб рдореЗрдВ рдХреБрдЫ рдЕрддрд┐рд╢реНрдпреЛрдХреНрддрд┐ рд╣реИ, рддреЛ рдпрд╣ рдХрдЪрд░рд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╕реНрд░реЛрдд рдХреЛрдб рдХрд╛ рдЕрдВрддрд┐рдо рд╕рдВрд╕реНрдХрд░рдг:


 private WorkspaceProperties() { super(new Properties()); if (defaultInstance != null) throw new IllegalStateException(); Properties loadedProperties = readPropertiesFromFile(WORK_PROPERTIES_PATH); if (loadedProperties.isEmpty()) { throw new RuntimeException("Can`t load workspace properties"); } getProperties().putAll(loadedProperties); loadedProperties = readPropertiesFromFile(MY_WORK_PROPERTIES_PATH); getProperties().putAll(loadedProperties); System.out.println("Loaded properties:" + getProperties()); } private Properties readPropertiesFromFile(String filepath) { System.out.println("Try loading workspace properties" + filepath); try { int loadingTryLeft = 3; String relativePath = ""; while (loadingTryLeft > 0) { File file = new File(relativePath + filepath); if (file.canRead()) { return read(file); } else { relativePath += "../"; loadingTryLeft -= 1; } } System.out.println("file not found"); } catch (IOException e) { throw new RuntimeException("Can`t read " + filepath, e); } return new Properties(); } private Properties read(File file) throws IOException { try (InputStream is = new FileInputStream(file); InputStreamReader isr = new InputStreamReader(is, "UTF-8")) { Properties loadedProperties = new Properties(); loadedProperties.load(isr); System.out.println("Found file " + file.getAbsolutePath()); return loadedProperties; } } 

рд╕рд╛рд░рд╛рдВрд╢


рдкрд╛рд░реНрд╕ рдХрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд╕реНрд░реЛрдд рдХреЛрдб рдХреА рд▓рд╛рдкрд░рд╡рд╛рд╣ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдХреНрдпрд╛ рд╣реЛрддреА рд╣реИред рдмреНрд░реЗрдХрдбрд╛рдЙрди рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдкрд╡рд╛рдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡реНрдпрд╛рдкрд╛рд░ рддрд░реНрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рдиреЗ рддреБрд░рдВрдд рдЗрд╕рдХреЗ рд╕рдорд░реНрдерди рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рдЬрдиреНрдо рджрд┐рдпрд╛, рдЬреЛ рдирдИ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреЗ рдЖрдЧреЗ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдкрд░рд┐рд▓рдХреНрд╖рд┐рдд рд╣реБрдЖ рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рд╕реЗ рдкреНрд░рд╕реНрдерд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдПрдХ рд╕рд░рд▓ рдирд┐рдпрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ - рдХреЗрд╡рд▓ рдмреНрд░реЗрдХрдбрд╛рдЙрди рдХреЗ рд▓рд┐рдП рдЕрдкрд╡рд╛рдж - рдЖрдкрдХреЛ рдЧреЛрдЯреЛ рдпреБрдЧ рдореЗрдВ рд╡рд╛рдкрд╕ рдЬрд╛рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ рдФрд░ рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рд╕рд╛рдл, рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рдФрд░ рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ рд░рдЦреЗрдЧрд╛ред

Source: https://habr.com/ru/post/hi484840/


All Articles