001 /*
002 * Copyright (c) 2009 The openGion Project.
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
013 * either express or implied. See the License for the specific language
014 * governing permissions and limitations under the License.
015 */
016 package org.opengion.hayabusa.remote;
017
018 import java.util.Map;
019
020 import org.opengion.fukurou.util.StringUtil;
021 import org.opengion.hayabusa.resource.ResourceFactory;
022 import org.opengion.hayabusa.resource.ResourceManager;
023
024 /**
025 * RemoteControllableインタフェイスを実??
026 * サーブレ?経由で?リソース更新を行うためのクラスです?
027 *
028 * POSTキーとしてcommandとCLM、langが?です?
029 * commandは更新リソースの種別(COLUMN,LABEL,CODE,GUI)
030 * CLMはCLM値をカンマで区?たCSV形?
031 * langは更新対象の??例:ja)です?
032 * 詳しくはremoteControlメソ?のJavaDocをご覧下さ??
033 *
034 * @og.rev 4.1.0.0 (2007/12/20) 新規作?
035 *
036 * @version 4.1
037 * @author Masakazu Takahashi
038 * @since JDK6.0,
039 *
040 */
041 public class ClearResource implements RemoteControllable {
042 /**
043 * RemoteControllableインタフェイスの実?ソ?です?
044 * ClearResourceでは受け取ったパラメータによってコン?スト?リソースの再読込をします?
045 *
046 * POSTキーとして受け取るキーと値は次の通りとなりま?
047 * <table border="1" frame="box" rules="all" >
048 * <tr><th>キー </th><th>? </th><th>値 </th></tr>
049 * <tr><td>command </td><td>更新種別 </td><td>COLUMN,LABEL,CODE,GUI </td></tr>
050 * <tr><td>lang </td><td>?? </td><td>更新リソースの?? </td></tr>
051 * <tr><td>CLM </td><td>更新キー </td><td>キーカラ?","で区?たCSV形?/td></tr>
052 * </table>
053 *
054 * 動作?command == "GUI"の場合とそれ以外?場合に?れます?
055 * ?、リソースの更新はResourceManagerのメソ?を利用する部??共通です?
056 * こ?時?langによって更新対象の?を選択しま?nullの場合?ja)
057 * ?ommand?GUI"の場?
058 * ?面リソースを更新する場合?command="GUI"で渡します?
059 * ?UIに限ってCLMパラメータは不要です?
060 * ?esourceManager.guiClear()がコールされて画面リソースがクリアされます?
061 * ?同時に画面リソースのラベルリソースも?読込しま?
062 * ②command?GUI"以外?場?
063 * ?ommand?GUI"以外?場合?動作?どれも同じです?
064 * ?け取ったCLMパラメータをCSV?し?ループで回して
065 * ?esourceManager.clear(key)をコールします?
066 * ?
067 * 返す値は XML形式???です?
068 * <clear-resource>
069 * <command>command引数</command>
070 * <lang>lang引数</lang>
071 * <keys>
072 * <key>CLM引数の更新キー??/key>
073 * <key>CLM引数の更新キー??/key>
074 * ...
075 * </keys>
076 * </clear-resource>
077 * となります?
078 *
079 * @param valMap サーブレ?が受け取ったキーと値のマッ?
080 *
081 * @return XML形式?実行結果
082 */
083 public String remoteControl( final Map<String,String> valMap ) {
084 String command = valMap.get( "command" );
085 String clms = valMap.get( "CLM" );
086 String lang = valMap.get( "lang" );
087 ResourceManager rscM = ResourceFactory.newInstance( lang );
088
089 StringBuilder rtnStr = new StringBuilder();
090 rtnStr.append( "<clear-resource>" );
091 rtnStr.append( " <command>" ).append( command ).append( "</command>" );
092 rtnStr.append( " <lang>" ).append( lang ).append( "</lang>" );
093 rtnStr.append( " <keys>" );
094
095 if( "GUI".equals(command) ) {
096 rscM.guiClear();
097 rtnStr.append( " <key>").append( clms ).append( "</key>" );
098 }
099 else {
100 String[] vals = StringUtil.csv2Array( clms );
101 for( int i = 0; i < vals.length; i++ ) {
102 rscM.clear( vals[i] );
103 rtnStr.append( " <key>" ).append( vals[i] ).append( "</key>" );
104 }
105 }
106
107 rtnStr.append( " </keys>" );
108 rtnStr.append( "</clear-resource>" );
109 return rtnStr.toString();
110 }
111 }