| | |
| | | } |
| | | try |
| | | { |
| | | String line; |
| | | // Parse the file manually since '\' in windows paths can generate issues. |
| | | boolean slashInLastLine = false; |
| | | String key = null; |
| | | StringBuilder sbValue = null; |
| | | while ((line = reader.readLine()) != null) |
| | | { |
| | | line = line.trim(); |
| | | if (!line.startsWith("#")) |
| | | { |
| | | if (!slashInLastLine) |
| | | { |
| | | key = null; |
| | | sbValue = new StringBuilder(); |
| | | int index = line.indexOf('='); |
| | | if (index > 0) |
| | | { |
| | | key = line.substring(0, index); |
| | | if (key.indexOf(' ') != -1) |
| | | { |
| | | key = null; |
| | | } |
| | | } |
| | | } |
| | | |
| | | // Consider the space: in windows the user might add a path ending |
| | | // with '\'. With this approach we minimize the possibilities of |
| | | // error. |
| | | boolean hasSlash = line.endsWith(" \\"); |
| | | |
| | | if (hasSlash) |
| | | { |
| | | line = line.substring(0, line.length() - 1); |
| | | } |
| | | |
| | | String lineValue = null; |
| | | |
| | | if (slashInLastLine) |
| | | { |
| | | lineValue = line; |
| | | } |
| | | else if (key != null) |
| | | { |
| | | int index = line.indexOf('='); |
| | | if ((index != -1) && ((index + 1) < line.length())) |
| | | { |
| | | lineValue = line.substring(index+1); |
| | | } |
| | | } |
| | | if ((lineValue != null) && (lineValue.length() > 0)) |
| | | { |
| | | if (sbValue == null) |
| | | { |
| | | sbValue = new StringBuilder(); |
| | | } |
| | | sbValue.append(lineValue); |
| | | } |
| | | if (!hasSlash && (key != null) && (sbValue != null)) |
| | | { |
| | | properties.put(key, sbValue.toString()); |
| | | } |
| | | slashInLastLine = hasSlash; |
| | | } |
| | | } |
| | | updateProperties(reader, properties); |
| | | } |
| | | catch (IOException ioe) |
| | | { |
| | |
| | | return ErrorReturnCode.SUCCESSFUL.getReturnCode(); |
| | | } |
| | | |
| | | /** |
| | | * Reads the contents of the provided reader and updates the provided |
| | | * Properties object with it. This is required because '\' characters in |
| | | * windows paths generates problems. |
| | | * @param reader the buffered reader. |
| | | * @param properties the properties. |
| | | * @throws IOException if there is an error reading the buffered reader. |
| | | */ |
| | | public static void updateProperties( |
| | | BufferedReader reader, Properties properties) |
| | | throws IOException |
| | | { |
| | | String line; |
| | | boolean slashInLastLine = false; |
| | | String key = null; |
| | | StringBuilder sbValue = null; |
| | | while ((line = reader.readLine()) != null) |
| | | { |
| | | line = line.trim(); |
| | | if (!line.startsWith("#")) |
| | | { |
| | | if (!slashInLastLine) |
| | | { |
| | | key = null; |
| | | sbValue = new StringBuilder(); |
| | | int index = line.indexOf('='); |
| | | if (index > 0) |
| | | { |
| | | key = line.substring(0, index); |
| | | if (key.indexOf(' ') != -1) |
| | | { |
| | | key = null; |
| | | } |
| | | } |
| | | } |
| | | |
| | | // Consider the space: in windows the user might add a path ending |
| | | // with '\'. With this approach we minimize the possibilities of |
| | | // error. |
| | | boolean hasSlash = line.endsWith(" \\"); |
| | | |
| | | if (hasSlash) |
| | | { |
| | | line = line.substring(0, line.length() - 1); |
| | | } |
| | | |
| | | String lineValue = null; |
| | | |
| | | if (slashInLastLine) |
| | | { |
| | | lineValue = line; |
| | | } |
| | | else if (key != null) |
| | | { |
| | | int index = line.indexOf('='); |
| | | if ((index != -1) && ((index + 1) < line.length())) |
| | | { |
| | | lineValue = line.substring(index+1); |
| | | } |
| | | } |
| | | if ((lineValue != null) && (lineValue.length() > 0)) |
| | | { |
| | | if (sbValue == null) |
| | | { |
| | | sbValue = new StringBuilder(); |
| | | } |
| | | sbValue.append(lineValue); |
| | | } |
| | | if (!hasSlash && (key != null) && (sbValue != null)) |
| | | { |
| | | properties.put(key, sbValue.toString()); |
| | | } |
| | | slashInLastLine = hasSlash; |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * {@inheritDoc} |