/*
履歴:
NO 日付 内容
001 2021.04.26 新規作成
*/
package com.galaxygoby;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* - クラス概要:
*
- 共有メモリアクセス用クラス
*
- WEB/APサーバの共有メモリで管理するテーブル情報を取得する。
*
*/
public class ShmStaticTable {
/** スペース */
private static final String SPACE = " ";
/** 空行 */
private static final String BLANK = "";
/** カンマ */
private static final String COMMA = ",";
/** コロン */
private static final String SEMICOLON = ";";
/** クエスチョン */
private static final String QUESTION = "?";
/** 等号(=) */
private static final String EQUAL = "=";
/** 不等号、より大きい(>) */
private static final String MORE_BIG = ">";
/** 不等号、より小さい(<) */
private static final String MORE_SMALL = "<";
/** 不等号、大きいイコール(>=) */
private static final String BIG_EQUAL = ">=";
/** 不等号、小さいイコール(<=) */
private static final String SMALL_EQUAL = "<=";
/** 等しくない(!=) */
private static final String NOT_EQUAL = "!=";
/** 文字列(or) */
private static final String STR_OR = "or";
/** 文字列(and) */
private static final String STR_AND = "and";
/** 改行コード */
private static final String BREAK_CODE = "\n";
/** 空白入り改行コード */
private static final String SPACE_BREAK_CODE = " \n";
/** タブコード */
private static final String TAB_CODE = "\t";
/** 空白(char型) */
private static final char CHAR_SPACE = ' ';
/** ゼロ(char型) */
private static final char CHAR_ZERO = '\0';
/** 0:共有メモリモード, 1:ファイル入力モード */
static int sharedMode = 0;
/** 静的データ管理ファイル名称 */
static String TableDefineFile;
/** 静的データ管理ファイル更新時刻(ミリ秒) */
static long DFModifiedTime = 0;
/** 静的データファイルLIST */
static Map StaticDataFile = new HashMap();
/** 最大条件数 */
private static final int MAX_COND = 20;
// ライブラリをロード
static {
// 共有メモリモード判定
getMode();
// 共有メモリアクセスライブラリのロード
if (sharedMode == 0) {
System.loadLibrary("GG_SHM0011");
}
}
// ネイティブメソッドを宣言
/**
*
* - C言語アプリケーション
*
- 指定された検索文字列とアクセスパターン定義(XML)により、データ検索を行い、検索データ長を返却する。
*
*
* @param inByte TableName/Key/in を改行文字区切りでByte列に設定。
* @return 検索結果データ長を返却。
*/
public native int SHM0011(byte[] inByte);
/**
*
* - C言語アプリケーション
*
- SHM0011で検索を行った結果を返却する。SHM0011でデータ長を取得した大きさ分だけ、
*
- 本APでoutByte領域を確保し、SHM0011getDataでoutByte領域にデータ返却を行う。
*
*
* @param outByte 返却データ領域。カラムが\tで、行が\nで区切られて返却。
*/
public native void SHM0011getData(byte[] outByte);
/**
*
* - 業務APが共有メモリアクセスAPI(本API)を使用する入口。static メソッドとして利用。
*
*
* @param TableName 参照するテーブルの名称を指す識別子を指定。
* @param Key 参照するアクセスキー(アクセス方法)を指定。
* @param in Keyで指定した検索条件に設定する検索条件の値を設定。
* @return 検索結果を返却する領域。(Map)
*/
public static Map getTableData(String TableName, String Key, Map in) {
// 共有メモリモード判定(0:共有メモリからデータ取得、1:ファイルからデータ取得)
if (sharedMode == 0) {
return (getSharedMemory(TableName, Key, in));
}
else {
return (getFileData(TableName, Key, in));
}
}
/**
*
* - 業務APが共有メモリアクセスAPI(本API)を使用する入口。static メソッドとして利用。
*
*
* @param TableName 参照するテーブルの名称を指す識別子を指定。
* @param Key 参照するアクセスキー(アクセス方法)を指定。
* @param in Keyで指定した検索条件に設定する検索条件の値を設定。
* @return 検索結果を返却する領域。(List