All Downloads are FREE. Search and download functionalities are using the official Maven repository.

jp.co.yahoo.dataplatform.config.GeneralConfMaker Maven / Gradle / Ivy

/**
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 * 

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package jp.co.yahoo.dataplatform.config; import java.util.Set; import java.util.Map; import java.util.Iterator; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.InputStreamReader; import java.io.BufferedReader; /** * 一般的な key = value が1行に1つ記載されている conf を読み込むためのクラス. *

コメントアウトの条件は以下の通り.

*

先頭(空白は除く)が # の行

*

先頭(空白は除く)が // の行

*

今回はそこまで厳密なものを作成する要求がないため上記のみとしている.

*/ public class GeneralConfMaker implements IConfigReader,IConfigWriter{ private static final byte[] LINE_SEP = {'\n'}; @Override public void read( final Map settingContainer , final String confFilePath ) throws IOException{ InputStream in = new BufferedInputStream( new FileInputStream( confFilePath ) ); read( settingContainer , in ); } @Override public void read( final Map settingContainer , final InputStream in ) throws IOException{ BufferedReader lineReader = new BufferedReader( new InputStreamReader( in , "UTF-8" ) ); String line; while( ( line = lineReader.readLine() ) != null ){ line = line.trim(); if( line.isEmpty() || line.indexOf("#") == 0 || line.indexOf("//") == 0 ){ continue; } String[] keyValue = line.split( "=" , 2 ); if( keyValue.length != 2 ){ throw new IOException( "Invalid str : " + line ); } String key = keyValue[0].trim(); String value = keyValue[1].trim(); settingContainer.put( key , value ); } lineReader.close(); } @Override public void write( final Map settingContainer , final String outputPath ) throws IOException{ write( settingContainer , outputPath , false ); } @Override public void write( final Map settingContainer , final String outputPath , final boolean overwrite ) throws IOException{ File targetFile = new File( outputPath ); if( targetFile.exists() ){ if( overwrite ){ if( ! targetFile.delete() ){ throw new IOException( "Could not remove file. Target : " + outputPath ); } } else{ throw new IOException( "Output file is already exists. Target : " + outputPath ); } } OutputStream out = new BufferedOutputStream( new FileOutputStream( outputPath ) ); write( settingContainer , out ); } @Override public void write( final Map settingContainer , final OutputStream out ) throws IOException{ Set keySet = settingContainer.keySet(); Iterator keys = keySet.iterator(); while( keys.hasNext() ){ String key = keys.next(); String value = settingContainer.get( key ); byte[] outputBytes = String.format( "%s=%s" , key , value ).getBytes( "UTF-8" ); out.write( outputBytes , 0 , outputBytes.length ); out.write( LINE_SEP , 0 , LINE_SEP.length ); } out.close(); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy