    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 */
    016package org.opengion.hayabusa.remote;
    017
    018import java.util.Map;
    019
    020import org.opengion.fukurou.util.StringUtil;
    021import org.opengion.hayabusa.resource.ResourceFactory;
    022import org.opengion.hayabusa.resource.ResourceManager;
    023import static org.opengion.fukurou.system.HybsConst.BUFFER_MIDDLE;      // 6.1.0.0 (2014/12/26) refactoring
    024
    025/**
    026 * RemoteControllableｲﾝﾀﾌｪｲｽを実装した
    027 * ｻｰﾌﾞﾚｯﾄ経由で遠隔ﾘｿｰｽ更新を行うためのｸﾗｽです。
    028 *
    029 * POSTｷｰとしてcommandとCLM、langが必要です。
    030 * commandは更新ﾘｿｰｽの種別(COLUMN,LABEL,CODE,GUI)
    031 * CLMはCLM値をｶﾝﾏで区切ったCSV形式
    032 * langは更新対象の言語(例：ja)です。
    033 * 詳しくはremoteControlﾒｿｯﾄﾞのJavaDocをご覧下さい。
    034 *
    035 * @og.rev 4.1.0.0 (2007/12/20) 新規作成
    036 *
    037 * @version     4.1
    038 * @author      Masakazu Takahashi
    039 * @since       JDK6.0,
    040 */
    041public class ClearResource implements RemoteControllable {
    042
    043        /**
    044         * ﾃﾞﾌｫﾙﾄｺﾝｽﾄﾗｸﾀｰ
    045         *
    046         * @og.rev 6.4.2.0 (2016/01/29) PMD refactoring. Each class should declare at least one constructor.
    047         */
    048        public ClearResource() { super(); }             // これも、自動的に呼ばれるが、空のﾒｿｯﾄﾞを作成すると警告されるので、明示的にしておきます。
    049
    050        /**
    051         * RemoteControllableｲﾝﾀﾌｪｲｽの実装ﾒｿｯﾄﾞです。
    052         * ClearResourceでは受け取ったﾊﾟﾗﾒｰﾀによってｺﾝﾃｷｽﾄのﾘｿｰｽの再読込をします。
    053         *
    054         * POSTｷｰとして受け取るｷｰと値は次の通りとなります
    055         * <table class="plain">
    056         *   <caption>POSTｷｰとして受け取るｷｰと値</caption>
    057         *   <tr><th>ｷｰ                 </th><th>内容             </th><th>値                                                      </th></tr>
    058         *   <tr><td>command    </td><td>更新種別   </td><td>COLUMN,LABEL,CODE,GUI          </td></tr>
    059         *   <tr><td>SYSTEM_ID  </td><td>ｼｽﾃﾑID         </td><td>更新ﾘｿｰｽのｼｽﾃﾑID                  </td></tr>
    060         *   <tr><td>lang               </td><td>言語             </td><td>更新ﾘｿｰｽの言語                              </td></tr>
    061         *   <tr><td>CLM                </td><td>更新ｷｰ           </td><td>ｷｰｶﾗﾑを","で区切ったCSV形式</td></tr>
    062         * </table>
    063         *
    064         * 動作はcommand = "GUI"の場合とそれ以外の場合に分かれます。
    065         * 但し、ﾘｿｰｽの更新はResourceManagerのﾒｿｯﾄﾞを利用する部分は共通です。
    066         * この時、langによって更新対象の言語を選択します(nullの場合はja)
    067         * ①commandが"GUI"の場合
    068         * 　画面ﾘｿｰｽを更新する場合はcommand="GUI"で渡します。
    069         * 　GUIに限ってCLMﾊﾟﾗﾒｰﾀは不要です。
    070         * 　ResourceManager.guiClear()がｺｰﾙされて画面ﾘｿｰｽがｸﾘｱされます。
    071         * 　(同時に画面ﾘｿｰｽのﾗﾍﾞﾙﾘｿｰｽも再読込します)
    072         * ②commandが"GUI"以外の場合
    073         * 　commandが"GUI"以外の場合の動作はどれも同じです。
    074         * 　受け取ったCLMﾊﾟﾗﾒｰﾀをCSV分解し、ﾙｰﾌﾟで回して
    075         * 　ResourceManager.clear(key)をｺｰﾙします。
    076         *
    077         * 返す値は XML形式の文字列です。
    078         * &lt;clear-resource&gt;
    079         *   &lt;command&gt;command引数&lt;/command&gt;
    080         *   &lt;lang&gt;lang引数&lt;/lang&gt;
    081         *   &lt;keys&gt;
    082         *     &lt;key&gt;CLM引数の更新ｷｰ1&lt;/key&gt;
    083         *     &lt;key&gt;CLM引数の更新ｷｰ2&lt;/key&gt;
    084         *     ...
    085         *   &lt;/keys&gt;
    086         * &lt;/clear-resource&gt;
    087         * となります。
    088         *
    089         * @og.rev 8.5.0.0 (2023/04/21) SYSTEM_ID 指定の場合、ResourceManager に渡すように対応
    090         *
    091         * @param       valMap  ｻｰﾌﾞﾚｯﾄが受け取ったｷｰと値のﾏｯﾌﾟ
    092         *
    093         * @return      XML形式の実行結果
    094         * @og.rtnNotNull
    095         */
    096        @Override       // RemoteControllable
    097        public String remoteControl( final Map<String,String> valMap ) {
    098                final String command    = valMap.get( "command" );
    099                final String clms               = valMap.get( "CLM" );
    100                final String systemId   = valMap.get( "SYSTEM_ID" );            // 8.5.0.0 (2023/04/21) Add
    101                final String lang               = valMap.get( "lang" );
    102
    103//              final ResourceManager rscM      = ResourceFactory.newInstance( lang );
    104                final ResourceManager rscM      = ResourceFactory.newInstance( systemId, lang, false ); // 8.5.0.0 (2023/04/21) Modify
    105
    106                final StringBuilder rtnStr = new StringBuilder( BUFFER_MIDDLE )
    107                        .append( "<clear-resource><command>" ).append( command )
    108                        .append( "</command><lang>"     ).append( lang )
    109                        .append( "</lang><keys>" );
    110
    111                if( "GUI".equals(command) ) {
    112                        rscM.guiClear();
    113                        rtnStr.append( " <key>").append( clms ).append( "</key>" );
    114                }
    115                else {
    116                        final String[] vals = StringUtil.csv2Array( clms );
    117                        for( int i=0; i<vals.length; i++ ) {
    118                                rscM.clear( vals[i] );
    119                                rtnStr.append( " <key>" ).append( vals[i] ).append( "</key>" );
    120                        }
    121                }
    122
    123                rtnStr.append( " </keys></clear-resource>" );
    124                return rtnStr.toString();
    125        }
    126}