initialize
This commit is contained in:
249
interface/asm/dotnet/MesTools/ImsApi/ArrayPrinter.cs
Normal file
249
interface/asm/dotnet/MesTools/ImsApi/ArrayPrinter.cs
Normal file
@@ -0,0 +1,249 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace MesTools.ImsApi
|
||||
{
|
||||
public class ArrayPrinter
|
||||
{
|
||||
|
||||
private TypePrinter typePrinter;
|
||||
|
||||
public static int MAX_ARRAY_SIZE = 3;
|
||||
|
||||
public ArrayPrinter(TypePrinter typePrinter)
|
||||
{
|
||||
this.typePrinter = typePrinter;
|
||||
}
|
||||
|
||||
public void print(String varName, String[] data, StringBuilder stringBuffer)
|
||||
{
|
||||
printArrayHeader("String", varName, data.Length, stringBuffer);
|
||||
|
||||
for (int i = 0; i < data.Length; i++)
|
||||
{
|
||||
if (i >= MAX_ARRAY_SIZE)
|
||||
{
|
||||
stringBuffer.Append("...");
|
||||
break;
|
||||
}
|
||||
if (i > 0)
|
||||
{
|
||||
stringBuffer.Append(',');
|
||||
}
|
||||
stringBuffer.Append('"').Append(data[i]).Append('"');
|
||||
}
|
||||
stringBuffer.Append('}');
|
||||
}
|
||||
|
||||
public void print(String varName, char[] data, StringBuilder stringBuffer)
|
||||
{
|
||||
printArrayHeader("char", varName, data.Length, stringBuffer);
|
||||
|
||||
for (int i = 0; i < data.Length; i++)
|
||||
{
|
||||
if (i >= MAX_ARRAY_SIZE)
|
||||
{
|
||||
stringBuffer.Append("...");
|
||||
break;
|
||||
}
|
||||
if (i > 0)
|
||||
{
|
||||
stringBuffer.Append(',');
|
||||
}
|
||||
stringBuffer.Append('\'').Append(data[i]).Append('\'');
|
||||
}
|
||||
stringBuffer.Append('}');
|
||||
}
|
||||
|
||||
public void print(String varName, float[] data, StringBuilder stringBuffer)
|
||||
{
|
||||
printArrayHeader("float", varName, data.Length, stringBuffer);
|
||||
|
||||
for (int i = 0; i < data.Length; i++)
|
||||
{
|
||||
if (i >= MAX_ARRAY_SIZE)
|
||||
{
|
||||
stringBuffer.Append("...");
|
||||
break;
|
||||
}
|
||||
if (i > 0)
|
||||
{
|
||||
stringBuffer.Append(',');
|
||||
}
|
||||
stringBuffer.Append(data[i]);
|
||||
}
|
||||
stringBuffer.Append('}');
|
||||
}
|
||||
|
||||
public void print(String varName, double[] data, StringBuilder stringBuffer)
|
||||
{
|
||||
printArrayHeader("double", varName, data.Length, stringBuffer);
|
||||
for (int i = 0; i < data.Length; i++)
|
||||
{
|
||||
if (i >= MAX_ARRAY_SIZE)
|
||||
{
|
||||
stringBuffer.Append("...");
|
||||
break;
|
||||
}
|
||||
if (i > 0)
|
||||
{
|
||||
stringBuffer.Append(',');
|
||||
}
|
||||
stringBuffer.Append(data[i]);
|
||||
}
|
||||
stringBuffer.Append('}');
|
||||
}
|
||||
|
||||
private void printArrayHeader(String type, String varName, int Length, StringBuilder stringBuffer)
|
||||
{
|
||||
typePrinter.print(type, stringBuffer);
|
||||
if (varName != null && varName.Length != 0)
|
||||
{
|
||||
stringBuffer.Append(varName).Append(":");
|
||||
}
|
||||
stringBuffer.Append('[').Append(Length).Append("]{");
|
||||
}
|
||||
|
||||
public void print(String varName, bool[] data, StringBuilder stringBuffer)
|
||||
{
|
||||
printArrayHeader("boolean", varName, data.Length, stringBuffer);
|
||||
|
||||
for (int i = 0; i < data.Length; i++)
|
||||
{
|
||||
if (i >= MAX_ARRAY_SIZE)
|
||||
{
|
||||
stringBuffer.Append("...");
|
||||
break;
|
||||
}
|
||||
if (i > 0)
|
||||
{
|
||||
stringBuffer.Append(',');
|
||||
}
|
||||
stringBuffer.Append(data[i]);
|
||||
}
|
||||
stringBuffer.Append('}');
|
||||
}
|
||||
|
||||
public void print(String varName, byte[] data, StringBuilder stringBuffer)
|
||||
{
|
||||
printArrayHeader("byte", varName, data.Length, stringBuffer);
|
||||
|
||||
for (int i = 0; i < data.Length; i++)
|
||||
{
|
||||
if (i >= MAX_ARRAY_SIZE)
|
||||
{
|
||||
stringBuffer.Append("...");
|
||||
break;
|
||||
}
|
||||
if (i > 0)
|
||||
{
|
||||
stringBuffer.Append(',');
|
||||
}
|
||||
stringBuffer.Append(data[i]);
|
||||
}
|
||||
stringBuffer.Append('}');
|
||||
}
|
||||
|
||||
public void print(String varName, short[] data, StringBuilder stringBuffer)
|
||||
{
|
||||
printArrayHeader("short", varName, data.Length, stringBuffer);
|
||||
|
||||
for (int i = 0; i < data.Length; i++)
|
||||
{
|
||||
if (i >= MAX_ARRAY_SIZE)
|
||||
{
|
||||
stringBuffer.Append("...");
|
||||
break;
|
||||
}
|
||||
if (i > 0)
|
||||
{
|
||||
stringBuffer.Append(',');
|
||||
}
|
||||
stringBuffer.Append(data[i]);
|
||||
}
|
||||
stringBuffer.Append('}');
|
||||
}
|
||||
|
||||
public void print(String varName, int[] data, StringBuilder stringBuffer)
|
||||
{
|
||||
printArrayHeader("int", varName, data.Length, stringBuffer);
|
||||
|
||||
for (int i = 0; i < data.Length; i++)
|
||||
{
|
||||
if (i >= MAX_ARRAY_SIZE)
|
||||
{
|
||||
stringBuffer.Append("...");
|
||||
break;
|
||||
}
|
||||
if (i > 0)
|
||||
{
|
||||
stringBuffer.Append(',');
|
||||
}
|
||||
stringBuffer.Append(data[i]);
|
||||
}
|
||||
stringBuffer.Append('}');
|
||||
}
|
||||
|
||||
private void printArrayValues(Object[] data, StringBuilder stringBuffer)
|
||||
{
|
||||
for (int i = 0; i < data.Length; i++)
|
||||
{
|
||||
if (i >= MAX_ARRAY_SIZE)
|
||||
{
|
||||
stringBuffer.Append("...");
|
||||
break;
|
||||
}
|
||||
if (i > 0)
|
||||
{
|
||||
stringBuffer.Append(',');
|
||||
}
|
||||
stringBuffer.Append(data[i]);
|
||||
}
|
||||
stringBuffer.Append('}');
|
||||
}
|
||||
|
||||
public void print(String varName, long[] data, StringBuilder stringBuffer)
|
||||
{
|
||||
printArrayHeader("long", varName, data.Length, stringBuffer);
|
||||
|
||||
for (int i = 0; i < data.Length; i++)
|
||||
{
|
||||
if (i >= MAX_ARRAY_SIZE)
|
||||
{
|
||||
stringBuffer.Append("...");
|
||||
break;
|
||||
}
|
||||
if (i > 0)
|
||||
{
|
||||
stringBuffer.Append(',');
|
||||
}
|
||||
stringBuffer.Append(data[i]);
|
||||
}
|
||||
stringBuffer.Append('}');
|
||||
}
|
||||
|
||||
public void print(String varName, StringBuilder[] data, StringBuilder stringBuffer)
|
||||
{
|
||||
printArrayHeader("StringBuffer", varName, data.Length, stringBuffer);
|
||||
|
||||
for (int i = 0; i < data.Length; i++)
|
||||
{
|
||||
if (i >= MAX_ARRAY_SIZE)
|
||||
{
|
||||
stringBuffer.Append("...");
|
||||
break;
|
||||
}
|
||||
if (i > 0)
|
||||
{
|
||||
stringBuffer.Append(',');
|
||||
}
|
||||
stringBuffer.Append('"').Append(data[i].ToString()).Append('"');
|
||||
}
|
||||
stringBuffer.Append('}');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
30
interface/asm/dotnet/MesTools/ImsApi/FieldPrinter.cs
Normal file
30
interface/asm/dotnet/MesTools/ImsApi/FieldPrinter.cs
Normal file
@@ -0,0 +1,30 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace MesTools.ImsApi
|
||||
{
|
||||
public class FieldPrinter
|
||||
{
|
||||
public static bool INCLUDE_FIELD_NAMES = true;
|
||||
public static bool FIELD_COUNTER = false;
|
||||
|
||||
public void print(String fieldName, StringBuilder stringBuffer)
|
||||
{
|
||||
if (INCLUDE_FIELD_NAMES && fieldName != null && fieldName.Length != 0)
|
||||
{
|
||||
stringBuffer.Append(fieldName).Append(":");
|
||||
}
|
||||
}
|
||||
|
||||
public void printCounter(int counter, StringBuilder stringBuffer)
|
||||
{
|
||||
if (FIELD_COUNTER)
|
||||
{
|
||||
stringBuffer.Append("#").Append(counter).Append(":");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
209
interface/asm/dotnet/MesTools/ImsApi/IIMSApi.cs
Normal file
209
interface/asm/dotnet/MesTools/ImsApi/IIMSApi.cs
Normal file
@@ -0,0 +1,209 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using com.itac.mes.imsapi.client.dotnet;
|
||||
using com.itac.mes.imsapi.domain.container;
|
||||
|
||||
namespace com.itac.mes.imsapi
|
||||
{
|
||||
/// <summary>
|
||||
/// frankp 20141211
|
||||
/// A snapshot of he current IMS-API.
|
||||
/// I do a generic logging for all API functions via a proxy. This requires all functions to reside in an interface instead of a class.
|
||||
/// </summary>
|
||||
public interface IIMSApi
|
||||
{
|
||||
int adviceConfirmAdvice(IMSApiSessionContextStruct sessionContext, string stationNumber, string userName, string password, int adviceId, int confirmationStatus, string[] adviceEditTextArray);
|
||||
int adviceGetAdvice(IMSApiSessionContextStruct sessionContext, string stationNumber, bool ignoreStationNumber, bool checkStationGroup, bool checkPartGroup, KeyValue[] adviceFilters, out Advice[] adviceArray);
|
||||
int apsGetWorkorderDetails(IMSApiSessionContextStruct sessionContext, string stationNumber, KeyValue[] apsGetWorkorderDetailsFilters, string[] apsGetWorkorderDetailResultKeys, out string[] apsGetWorkorderDetailResultValues, out bool hasMore);
|
||||
int apsGetWorkorders(IMSApiSessionContextStruct sessionContext, string stationNumber, KeyValue[] apsGetWorkordersFilters, string[] apsGetWorkordersResultKeys, out string[] apsGetWorkordersResultValues, out bool hasMore);
|
||||
int attribAppendAttributeValues(IMSApiSessionContextStruct sessionContext, string stationNumber, int objectType, string objectNumber, string objectDetail, long bookDate, int allowOverWrite, string[] attributeUploadKeys, string[] attributeUploadValues, out string[] attributeResultValues);
|
||||
int attribCreateAttribute(IMSApiSessionContextStruct sessionContext, string stationNumber, int objectType, string attributeCode, string attributeDesc, string uniquenessType);
|
||||
int attribGetAttributeValues(IMSApiSessionContextStruct sessionContext, string stationNumber, int objectType, string objectNumber, string objectDetail, string[] attributeCodeArray, int allMergeLevel, string[] attributeResultKeys, out string[] attributeResultValues);
|
||||
int attribGetObjectsForAttributeValues(IMSApiSessionContextStruct sessionContext, string stationNumber, int objectType, string attributeCode, string attributeValue, int maxRows, KeyValue[] attributeFilters, string[] objectResultKeys, out string[] objectResultValues);
|
||||
int attribRemoveAttributeValue(IMSApiSessionContextStruct sessionContext, string stationNumber, int objectType, string objectNumber, string objectDetail, string attributeCode, string attributeValueKey);
|
||||
int batchAssignBatchNumberToWorkOrder(IMSApiSessionContextStruct sessionContext, string stationNumber, string workOrderNumber, string partNumber, string bomVersion, string bomIndex, string bomVersionErp, int processLayer, string batchNumber, double quantity, int activateWorkOrder);
|
||||
int batchGetBatchInfo(IMSApiSessionContextStruct sessionContext, string stationNumber, KeyValue[] batchInfoFilter, string[] batchInfoResultKeys, out string[] batchInfoResultValues);
|
||||
int batchGetRegisteredBatch(IMSApiSessionContextStruct sessionContext, string stationNumber, int processLayer, string[] batchResultKeys, out string[] batchResultValues);
|
||||
int batchMergeBatch(IMSApiSessionContextStruct sessionContext, string stationNumber, string serialNumberRef, string serialNumberPos, string batchNumber, int processLayer, double usedBatchQuantity, int duplicateSerialNumber, int ignoreBatchComplete);
|
||||
int batchRegisterBatch(IMSApiSessionContextStruct sessionContext, string stationNumber, string batchNumber, int processLayer, int ignoreBatchComplete, long registerDate);
|
||||
int batchSplitBatchNumberToSerialNumber(IMSApiSessionContextStruct sessionContext, string stationNumber, ref string serialNumberRef, ref string serialNumberPos, string batchNumber, int processLayer, double usedBatchQuantity, int duplicateSerialNumber, int ignoreBatchComplete);
|
||||
int batchUnregisterBatch(IMSApiSessionContextStruct sessionContext, string stationNumber, string batchNumber, int processLayer, double batchTotalQuantity, int batchComplete, long unregisterDate);
|
||||
int configCreateParameters(IMSApiSessionContextStruct sessionContext, KeyValue[] options, string[] parameterUploadKeys, string[] parameterUploadValues, string[] parameterResultKeys, out string[] parameterResultValues);
|
||||
int configDeleteParameters(IMSApiSessionContextStruct sessionContext, KeyValue[] options, KeyValue[] parameterFilter, string[] parameterResultKeys, out string[] parameterResultValues);
|
||||
int configDeleteValues(IMSApiSessionContextStruct sessionContext, KeyValue[] options, KeyValue[] configContext, string[] uploadKeys, string[] uploadValues, string[] resultKeys, out string[] resultValues);
|
||||
int configGetDimensionValues(IMSApiSessionContextStruct sessionContext, KeyValue[] options, KeyValue[] dimensionFilter, out string[] resultValues);
|
||||
int configGetParameters(IMSApiSessionContextStruct sessionContext, KeyValue[] options, KeyValue[] parameterFilter, string[] parameterResultKeys, out string[] parameterResultValues);
|
||||
int configGetValues(IMSApiSessionContextStruct sessionContext, KeyValue[] options, KeyValue[] configContext, KeyValue[] parameterFilter, string[] parameterResultKeys, out string[] parameterResultValues, string[] resultKeys, out string[] resultValues);
|
||||
int configUpdateParameters(IMSApiSessionContextStruct sessionContext, KeyValue[] options, string[] parameterUploadKeys, string[] parameterUploadValues, string[] parameterResultKeys, out string[] parameterResultValues);
|
||||
int configUpdateValues(IMSApiSessionContextStruct sessionContext, KeyValue[] options, KeyValue[] configContext, string[] uploadKeys, string[] uploadValues, string[] resultKeys, out string[] resultValues);
|
||||
int customFunction(IMSApiSessionContextStruct sessionContext, string methodName, string[] inArgs, out string[] outArgs, out string customErrorString);
|
||||
int edaAssignExternalData(IMSApiSessionContextStruct sessionContext, string stationNumber, int objectType, string objectNumber, string objectDetail, string[] assignExternalDataUploadKeys, string[] assignExternalDataUploadValues);
|
||||
int edaGetExternalDataForObject(IMSApiSessionContextStruct sessionContext, string stationNumber, string[] externalDataFilterKeys, string[] externalDataFilterValues, string[] externalDataResultKeys, out string[] externalDataResultValues);
|
||||
int edaGetNextFreeExternalData(IMSApiSessionContextStruct sessionContext, string stationNumber, int objectType, string objectNumber, string objectDetail, int functionMode, string[] nextFreeExternalDataFilterKeys, string[] nextFreeExternalDataFilterValues, string[] nextFreeExternalDataResultKeys, out string[] nextFreeExternalDataResultValues);
|
||||
int edaGetObjectsForExternalData(IMSApiSessionContextStruct sessionContext, string stationNumber, string[] objectExternalDataFilterKeys, string[] objectExternalDataFilterValues, string[] objectExternalDataResultKeys, out string[] objectExternalDataResultValues);
|
||||
int edaManageExternalData(IMSApiSessionContextStruct sessionContext, string stationNumber, int functionMode, string[] partGroupArray, string[] partNumberArray, KeyValue[] manageExternalData, string[] externalDataValues);
|
||||
int equCheckEquipmentData(IMSApiSessionContextStruct sessionContext, string stationNumber, string workOrderNumber, string serialNumber, string partNumber, int processLayer, int returnFailuresOnly, string[] equipmentResultKeys, out string[] equipmentResultValues);
|
||||
int equGetEquipment(IMSApiSessionContextStruct sessionContext, string stationNumber, KeyValue[] equipmentGetFilters, string[] equipmentGetResultKeys, out string[] equipmentGetResultValues);
|
||||
int equGetRequiredEquipmentData(IMSApiSessionContextStruct sessionContext, string stationNumber, string workOrderNumber, string serialNumber, string partNumber, int processLayer, string pmGroup, string[] equipmentResultKeys, out string[] equipmentResultValues);
|
||||
int equGetSetupEquipmentData(IMSApiSessionContextStruct sessionContext, string stationNumber, KeyValue[] equipmentSetupFilters, string[] equipmentSetupResultKeys, out string[] equipmentSetupResultValues);
|
||||
int equRemoveEquipment(IMSApiSessionContextStruct sessionContext, string stationNumber, string workOrderNumber, string serialNumber, int processLayer);
|
||||
int equSetLocation(IMSApiSessionContextStruct sessionContext, string stationNumber, string equipmentNo, string equipmentIndex, string location);
|
||||
int equUpdateEquipment(IMSApiSessionContextStruct sessionContext, string stationNumber, string[] equipmentUpdateKeys, string[] equipmentUpdateValues, out string[] equipmentUpdateResultValues);
|
||||
int equUpdateEquipmentData(IMSApiSessionContextStruct sessionContext, string stationNumber, int setupFlag, string serialNumber, string workOrderNumber, int processLayer, string[] equipmentUploadKeys, string[] equipmentUploadValues, out string[] equipmentResultValues);
|
||||
int execFormula(IMSApiSessionContextStruct sessionContext, string stationNumber, KeyValue[] formulaReferences, string[] formulaKeys, string[] formulaValues, string[] parameterKeys, string[] parameterValues, string[] resultKeys, out string[] resultValues, string[] missingParameterKeys, out string[] missingParameterValues);
|
||||
int execRuleSet(IMSApiSessionContextStruct sessionContext, string stationNumber, int processLayer, string ruleType, string ruleSet, KeyValue[] ruleProperties, out RuleResult[] ruleResults);
|
||||
int imsapiGetErrorList(IMSApiSessionContextStruct sessionContext, string[] localeArray, string[] groupNameArray, string[] functionNameArray, int[] errorCodes, string[] errorCodeResultKeys, out string[] errorCodeResultValues);
|
||||
int imsapiGetErrorText(IMSApiSessionContextStruct sessionContext, int errorCode, out string errorString);
|
||||
int imsapiGetFunctionInfo(IMSApiSessionContextStruct sessionContext, string functionName, out ImsApiFunctionStruct functionInfo, out ImsApiParameterStruct[] parameterArray);
|
||||
int imsapiGetFunctions(IMSApiSessionContextStruct sessionContext, string groupName, out ImsApiFunctionStruct[] functionArray);
|
||||
int imsapiGetGroups(IMSApiSessionContextStruct sessionContext, out ImsApiGroupStruct[] groupArray);
|
||||
int imsapiGetParameterConditions(IMSApiSessionContextStruct sessionContext, string functionName, string parameterName, out string conditionParamName, out ImsApiParamConditionStruct[] parameterConditionArray);
|
||||
int imsapiGetParameterInfo(IMSApiSessionContextStruct sessionContext, string functionName, string parameterName, string conditionValue, out ImsApiParameterStruct parameter, out ImsApiParamConditionStruct condition, out ImsApiKeyStruct[] keys);
|
||||
int imsapiGetSystemInfos(IMSApiSessionContextStruct sessionContext, string[] systemInfoResultKeys, out string[] systemInfoResultValues);
|
||||
int lockGetLockedObjects(IMSApiSessionContextStruct sessionContext, string stationNumber, int objectType, string objectNumber, string objectDetail, string lockGroupName, long lockDateFrom, long lockDateTo, int lockState, int maxRows, string[] objectResultKeys, out string[] objectResultValues);
|
||||
int lockObjects(IMSApiSessionContextStruct sessionContext, string stationNumber, int objectType, string lockGroupName, string lockInformation, long lockDate, int lockDependencies, string[] objectUploadKeys, string[] objectUploadValues, out string[] objectResultValues);
|
||||
int lockUnlockObjects(IMSApiSessionContextStruct sessionContext, string stationNumber, int objectType, string lockGroupName, string unlockInformation, int unlockCompleteGroup, long unlockDate, int lockDependencies, string[] objectUploadKeys, string[] objectUploadValues, out string[] objectResultValues);
|
||||
int mdaActivateRecipe(IMSApiSessionContextStruct sessionContext, string stationNumber, int functionMode, int recipeId, int recipeVersionId);
|
||||
int mdaCreateRecipe(IMSApiSessionContextStruct sessionContext, string stationNumber, string versionName, string versionDesc, int majorVersionChange, bool activate, long creationDate, int objectType, KeyValue[] recipeFilters, string[] recipeUploadKeys, string[] recipeUploadValues, out string[] recipeResultValues);
|
||||
int mdaGetDocumentContent(IMSApiSessionContextStruct sessionContext, string stationNumber, long documentId, out byte[] content);
|
||||
int mdaGetDocuments(IMSApiSessionContextStruct sessionContext, string stationNumber, KeyValue[] attributeFilters, KeyValue[] dataTypeFilters, string[] mdaResultKeys, out string[] mdaResultValues);
|
||||
int mdaGetRecipeData(IMSApiSessionContextStruct sessionContext, string stationNumber, int recipeVersionId, string function, string functionStep, string measurementName, double sequentialNumber, string type, string measurementType, int objectType, KeyValue[] recipeFilters, string[] recipeResultKeys, out string[] recipeResultValues);
|
||||
int mdaGetRecipeHeaderAndVersion(IMSApiSessionContextStruct sessionContext, string stationNumber, int objectType, KeyValue[] recipeHeaderFilter, string[] recipeHeaderResultKeys, out string[] recipeHeaderResultValues);
|
||||
int mdataBomVerify(IMSApiSessionContextStruct sessionContext, string stationNumber, int processLayer, string workOrderNumber, string productNumber, string bareBoardNumber, string bomIndex, string bomInfo, int bomValidFrom, string bomVersionERP, int verifyCompNameBased, int createNewBom, string[] bomUploadKeys, string[] bomUploadValues, out string[] bomResultValues);
|
||||
int mdataChangeWorkorderData(IMSApiSessionContextStruct sessionContext, string stationNumber, KeyValue[] workorderChangeData);
|
||||
int mdataCreateWorkorder(IMSApiSessionContextStruct sessionContext, string stationNumber, KeyValue[] workorderUploadKeyValues, string[] workorderResultKeys, out string[] workorderResultValues);
|
||||
int mdataGetBomData(IMSApiSessionContextStruct sessionContext, string stationNumber, KeyValue[] bomDataFilter, string[] bomDataResultKeys, out string[] bomDataResultValues);
|
||||
int mdataGetCalendarData(IMSApiSessionContextStruct sessionContext, string stationNumber, string[] calendarDataResultKeys, out string[] calendarDataResultValues);
|
||||
int mdataGetContactData(IMSApiSessionContextStruct sessionContext, string stationNumber, KeyValue[] contactFilter, string[] contactResultKeys, out string[] contactResultValues, out bool hasMore);
|
||||
int mdataGetFailureDataForStation(IMSApiSessionContextStruct sessionContext, string stationNumber, int functionMode, string[] failureDataResultKeys, out string[] failureDataResultValues);
|
||||
int mdataGetMachineAssetStructure(IMSApiSessionContextStruct sessionContext, string stationNumber, KeyValue[] machineAssetStructureFilter, string[] machineAssetStructureResultKeys, out string[] machineAssetStructureValues);
|
||||
int mdataGetPartData(IMSApiSessionContextStruct sessionContext, string stationNumber, KeyValue[] partFilter, string[] partDataResultKeys, out string[] partDataResultValues);
|
||||
int mdataGetProductInfo(IMSApiSessionContextStruct sessionContext, string stationNumber, string partNumber, int bomVersion, string bomIndex, int processVersion, int desolvingFlag, int onlyReleased, int onlyValid, string[] productInfoResultKeys, out string[] productInfoResultValues);
|
||||
int mdataGetProductsForLineOrStation(IMSApiSessionContextStruct sessionContext, string stationNumber, KeyValue[] productForLineOrStationFilter, string[] bomResultKeys, out string[] bomResultValues, string[] workplanResultKeys, out string[] workplanResultValues);
|
||||
int mdataGetStationConfiguration(IMSApiSessionContextStruct sessionContext, string stationNumber, KeyValue[] stationConfigFilter, string[] stationConfigCodeResultKeys, out string[] stationConfigCodeResultValues, string[] stationParamResultKeys, out string[] stationParamResultValues, string[] stationLicenseResultKeys, out string[] stationLicenseResultValues);
|
||||
int mdataGetWorkorders(IMSApiSessionContextStruct sessionContext, string stationNumber, KeyValue[] mdataGetWorkordersFilters, string[] mdataGetWorkordersResultKeys, out string[] mdataGetWorkordersResultValues, out bool hasMore);
|
||||
int mdataGetWorkplanActivities(IMSApiSessionContextStruct sessionContext, string stationNumber, KeyValue[] workplanFilter, string[] workplanDataResultKeys, out string[] workplanDataResultValues, string[] activitiesDataResultKeys, out string[] activitiesDataResultValues, string[] activityParamResultKeys, out string[] activityParamResultValues, string[] deviceDataResultKeys, out string[] deviceDataResultValues);
|
||||
int mdataGetWorkplanData(IMSApiSessionContextStruct sessionContext, string stationNumber, KeyValue[] workplanFilter, string[] workplanDataResultKeys, out string[] workplanDataResultValues);
|
||||
int mdataSetProductionCycleTime(IMSApiSessionContextStruct sessionContext, string stationNumber, string serialNumber, string serialNumberPos, string workOrderNumber, int processLayer, double setupCycleTime, double prodCycleTime, string processType, int cycleTimeForMultipleBoard);
|
||||
int mdaUploadDocument(IMSApiSessionContextStruct sessionContext, string stationNumber, int targetType, KeyValue[] attributeValues, KeyValue[] mdaValues, byte[] content);
|
||||
int mdcCreateConditionCode(IMSApiSessionContextStruct sessionContext, string stationNumber, string conditionClass, string conditionGroup, string conditionCode, string conditionName, string conditionDesc, string conditionCause, string conditionType, string colorRGB, string[] stationNumbers, string[] lineNumbers);
|
||||
int mdcCreateLog(IMSApiSessionContextStruct sessionContext, string stationNumber, long startDate, long endDate, string subject, string text, int forLine);
|
||||
int mdcGetConditionCodes(IMSApiSessionContextStruct sessionContext, string stationNumber, KeyValue[] conditionCodeFilter, string[] conditionCodeResultKeys, out string[] conditionCodeResultValues);
|
||||
int mdcGetLog(IMSApiSessionContextStruct sessionContext, string stationNumber, long fromDate, long toDate, out MdcLog[] logArray);
|
||||
int mdcGetRegisteredUser(IMSApiSessionContextStruct sessionContext, string stationNumber, KeyValue[] mdcGetRegisteredUserFilter, string[] mdcGetRegisteredUserKeys, out string[] mdcGetRegisteredUserValues);
|
||||
int mdcGetStationConditions(IMSApiSessionContextStruct sessionContext, string stationNumber, long fromDate, long toDate, string conditionType, int objectType, string[] conditionResultKeys, out string[] conditionResultValues);
|
||||
int mdcRegisterUserAtLine(IMSApiSessionContextStruct sessionContext, string stationNumber, string userId, string password, int registrationType, long bookDate);
|
||||
int mdcUploadStationCondition(IMSApiSessionContextStruct sessionContext, string stationNumber, string[] stationConditionUploadKeys, string[] stationConditionUploadValues, out string[] stationConditionResultValues);
|
||||
int mlChangeMaterialBinData(IMSApiSessionContextStruct sessionContext, string stationNumber, string materialBinNumber, KeyValue[] materialBinDataUploadValues);
|
||||
int mlCreateNewMaterialBin(IMSApiSessionContextStruct sessionContext, string stationNumber, string[] materialBinUploadKeys, string[] materialBinUploadValues, out string[] materialBinResultValues);
|
||||
int mlGetMaterialBinData(IMSApiSessionContextStruct sessionContext, string stationNumber, KeyValue[] materialBinFilters, AttributeInfo[] attributes, string[] materialBinResultKeys, out string[] materialBinResultValues);
|
||||
int mlGetNextMaterialBinNumber(IMSApiSessionContextStruct sessionContext, string stationNumber, string partNumber, out string materialBinNumber);
|
||||
int mlGetStorage(IMSApiSessionContextStruct sessionContext, string stationNumber, string storageCellNumber, string storageGroupNumber, string storageNumber, string[] storageResultKeys, out string[] storageResultValues);
|
||||
int mlSetMaterialBinLocation(IMSApiSessionContextStruct sessionContext, string stationNumber, string materialBinNumber, long bookDate, string binLocation, string binLocationBarcode, int transactionType);
|
||||
int mlSplitMaterialBin(IMSApiSessionContextStruct sessionContext, string stationNumber, string materialBinNumber, string[] splitMaterialBinKeys, string[] splitMaterialBinUploadValues, string[] splitMaterialBinResultKeys, out string[] splitMaterialBinResultValues);
|
||||
int mlUploadMaterialBinBooking(IMSApiSessionContextStruct sessionContext, string stationNumber, string[] materialBinBookingUploadKeys, string[] materialBinBookingUploadValues, out string[] materialBinBookingResultValues);
|
||||
int mslBeginDryObject(IMSApiSessionContextStruct sessionContext, string stationNumber, KeyValue[] mslBeginDryEventParams, string[] mslObjectKeys, string[] mslObjectValues, out string[] mslResultValues);
|
||||
int mslEndDryObject(IMSApiSessionContextStruct sessionContext, string stationNumber, KeyValue[] mslEventParams, string[] mslObjectKeys, string[] mslObjectValues, out string[] mslResultValues);
|
||||
int mslGetMinDryTimeForSerialnumber(IMSApiSessionContextStruct sessionContext, string stationNumber, KeyValue[] mslInfoFilters, string[] mslWorstCaseMinDryTimeResultKeys, out string[] mslWorstCaseMinDryTimeResultValues, string[] mslMinDryTimeResultKeys, out string[] mslMinDryTimeResultValues);
|
||||
int mslGetObjectInfo(IMSApiSessionContextStruct sessionContext, string stationNumber, int objectType, KeyValue[] mslInfoFilters, string[] mslInfoResultKeys, out string[] mslInfoResultValues);
|
||||
int mslStartObjectExpiration(IMSApiSessionContextStruct sessionContext, string stationNumber, KeyValue[] mslEventParams, string[] mslObjectKeys, string[] mslObjectValues, out string[] mslResultValues);
|
||||
int mslStopObjectExpiration(IMSApiSessionContextStruct sessionContext, string stationNumber, KeyValue[] mslEventParams, string[] mslObjectKeys, string[] mslObjectValues, out string[] mslResultValues);
|
||||
int pmGetFailureData(IMSApiSessionContextStruct sessionContext, string stationNumber, KeyValue[] failureDataFilters, string[] failureDataResultKeys, out string[] failureDataResultValues);
|
||||
int pmGetProductQuantity(IMSApiSessionContextStruct sessionContext, string stationNumber, int processLayer, long dateFrom, long dateTo, int functionMode, KeyValue[] productQuantityFilters, string[] filterDataKeys, string[] filterDataValues, string[] productQuantityResultKeys, out string[] productQuantityResultValues);
|
||||
int pmUploadQuantityAndFailureData(IMSApiSessionContextStruct sessionContext, string stationNumber, KeyValue[] bookingFailureData, string[] failureDataUploadKeys, string[] failureDataUploadValues, out string[] failureDataUploadResultValues);
|
||||
int regCheckLicense(IMSApiSessionContextStruct sessionContext, string stationNumber, int licenseType, string[] licenseUploadKeys, string[] licenseUploadValues, out string[] licenseResultValues);
|
||||
int regGetRegisteredUser(IMSApiSessionContextStruct sessionContext, string stationNumber, out string userName, out string name, out string firstname);
|
||||
int regLogin(IMSApiSessionValidationStruct sessionValidationStruct, out IMSApiSessionContextStruct sessionContext);
|
||||
int regLogout(IMSApiSessionContextStruct sessionContext);
|
||||
int regRegisterUser(IMSApiSessionContextStruct sessionContext, string stationNumber, string userName, string password, string client);
|
||||
int regUnregisterUser(IMSApiSessionContextStruct sessionContext, string stationNumber, string userName, string password, string client);
|
||||
int setupChangeSetupForSerialNumber(IMSApiSessionContextStruct sessionContext, string stationNumber, string[] setupChangeSerialKeys, string[] setupChangeSerialValues, string[] setupChangePartKeys, string[] setupChangePartValues, string[] setupChangeResultKeys, out string[] setupChangeResultValues);
|
||||
int setupCheck(IMSApiSessionContextStruct sessionContext, string stationNumber, string serialNumberRef, string serialNumberRefPos, string workOrderNumber, int processLayer, int checkMode, int resultMode, out string workorderNumber, out string productNumber, out string placementName, out int setupActive, out CheckSetupData[] checkSetupDataArray);
|
||||
int setupGetMaterialSetup(IMSApiSessionContextStruct sessionContext, string stationNumber, int processLayer, int setupFlag, long setupStartDate, long setupEndDate, string[] setupResultKeys, out string[] setupResultValues, string[] componentResultKeys, out string[] componentResultValues);
|
||||
int setupGetSetupDataBySerialNumber(IMSApiSessionContextStruct sessionContext, string stationNumber, string serialNumber, string partNumber, string location, int level, string[] setupResultKeys, out string[] setupResultValues);
|
||||
int setupGetSetupName(IMSApiSessionContextStruct sessionContext, string stationNumber, out string setupName);
|
||||
int setupGetStationSetupDataForMaterialBin(IMSApiSessionContextStruct sessionContext, string stationNumber, string materialBinNumber, string[] setupResultKeys, out string[] setupResultValues);
|
||||
int setupReplaceSetupForSerialNumber(IMSApiSessionContextStruct sessionContext, string stationNumber, int processLayer, string serialNumber, int serialNumberPos, string materialNumber, string compName, string materialBinNumberOld, string materialBinNumberNew, long bookDate);
|
||||
int setupStateChange(IMSApiSessionContextStruct sessionContext, string stationNumber, int processLayer, string workOrderNumber, string serialNumber, int serialNumberPos, int activateFlag);
|
||||
int setupUpdateMaterialSetup(IMSApiSessionContextStruct sessionContext, string stationNumber, int processLayer, string workOrderNumber, string productNumber, string setupName, string[] materialSetupUploadKeys, string[] materialSetupUploadValues, string[] compPositionsUploadKeys, string[] compPositionsUploadValues, out string[] materialSetupResultValues, out string[] compPositionsResultValues);
|
||||
int shipActivateShippingLotAtKap(IMSApiSessionContextStruct sessionContext, string stationNumber, string lotNumber);
|
||||
int shipAddChildLotToParentLot(IMSApiSessionContextStruct sessionContext, string stationNumber, string lotNumberChild, string lotNumberParent, long bookDate);
|
||||
int shipAddSerialNumberToShippingLot(IMSApiSessionContextStruct sessionContext, string stationNumber, string lotNumber, string serialNumber, int serialNumberPos, long bookDate);
|
||||
int shipCheckSerialNumberAddToShippingLot(IMSApiSessionContextStruct sessionContext, string stationNumber, string lotNumber, string serialNumber, string serialNumberPos);
|
||||
int shipCheckSerialNumberFromShippingLot(IMSApiSessionContextStruct sessionContext, string stationNumber, string lotNumber, string serialNumber, string serialNumberPos);
|
||||
int shipCompleteLot(IMSApiSessionContextStruct sessionContext, string stationNumber, string lotNumber, int allowLessQuantity, long bookDate);
|
||||
int shipDeactivateShippingLotAtKap(IMSApiSessionContextStruct sessionContext, string stationNumber, string lotNumber);
|
||||
int shipGetChildLotsForParentLot(IMSApiSessionContextStruct sessionContext, string stationNumber, string lotNumberParent, string[] childLotResultKeys, out string[] childLotResultValues);
|
||||
int shipGetLotFromSerialNumber(IMSApiSessionContextStruct sessionContext, string stationNumber, string serialNumber, string serialNumberPos, string[] lotResultKeys, out string[] lotResultValues);
|
||||
int shipGetSerialNumberDataForShippingLot(IMSApiSessionContextStruct sessionContext, string stationNumber, string lotNumber, string[] serialNumberResultKeys, out string[] serialNumberResultValues);
|
||||
int shipGetShippingLotInfo(IMSApiSessionContextStruct sessionContext, string stationNumber, KeyValue[] shippingLotFilters, string[] shippingLotResultKeys, out string[] shippingLotResultValues);
|
||||
int shipGetShippingPrefs(IMSApiSessionContextStruct sessionContext, string stationNumber, int objectType, string objectNumber, string objectDetail, int withPackagingRule, string[] shippingPrefsResultKeys, out string[] shippingPrefsResultValues);
|
||||
int shipMoveChildLots(IMSApiSessionContextStruct sessionContext, string stationNumber, StringStruct[] childLotArray, string actualParentLot, string newParentLot, long bookDate, out ResultData[] resultDataArray);
|
||||
int shipRemoveChildLots(IMSApiSessionContextStruct sessionContext, string stationNumber, string lotNumberParent, string[] lotNumbersChild, long bookDate, out ResultData[] resultArray);
|
||||
int shipRemoveSerialNumberFromShippingLot(IMSApiSessionContextStruct sessionContext, string stationNumber, string lotNumber, string serialNumber, string serialNumberPos, long bookDate);
|
||||
int shipReuseCompletedShippingLot(IMSApiSessionContextStruct sessionContext, string stationNumber, int functionMode, string lotNumber, string[] shippingLotResultKeys, out string[] shippingLotResultValues);
|
||||
int shipSendLot(IMSApiSessionContextStruct sessionContext, string stationNumber, string lotNumber, long bookDate, KeyValue[] shippingLotSendValues);
|
||||
int smtCheckMaterialBin(IMSApiSessionContextStruct sessionContext, string stationNumber, string[] materialBinUploadKeys, string[] materialBinUploadValues, out string[] materialBinResultValues);
|
||||
int smtConsumption(IMSApiSessionContextStruct sessionContext, string stationNumber, int processLayer, string lineName, string setupName, string productName, string bomVersion, string placementRecipe, bool assignSerialNumbers, bool bookSerialNumbers, bool activateSetup, ref SmtSerialNo[] serialNumbers, ref SmtEvent[] events, ref SmtPlacement[] placements, bool ignoreContainerProblems, bool createWorkOrder, bool activateWorkOrder, string workOrderNumber, double cycleTime);
|
||||
int smtEventSetup(IMSApiSessionContextStruct sessionContext, string stationNumber, int processLayer, string lineName, string setupName, string productName, string bomVersion, string placementRecipe, bool assignSerialNumbers, bool bookSerialNumbers, bool activateSetup, ref SmtSerialNo[] serialNumbers, ref SmtEvent[] events, ref SmtPlacement[] placements, bool ignoreContainerProblems, bool createWorkOrder, bool activateWorkOrder, string workOrderNumber, double cycleTime);
|
||||
int smtSerialNumberCheckIn(IMSApiSessionContextStruct sessionContext, string stationNumber, string[] serialNoCheckUploadKeys, string[] serialNoCheckUploadValues, out string[] serialNoCheckResultValues, string[] logInfoUploadKeys, string[] logInfoUploadValues, out string[] logInfoResultValues, string[] serialNumberStateResultKeys, out string[] serialNumberStateResultValues, string[] recipeResultKeys, out string[] recipeResultValues);
|
||||
int smtSerialNumberSetup(IMSApiSessionContextStruct sessionContext, string stationNumber, int processLayer, string lineName, string setupName, string productName, string bomVersion, string placementRecipe, bool assignSerialNumbers, bool bookSerialNumbers, bool activateSetup, ref SmtSerialNo[] serialNumbers, ref SmtEvent[] events, ref SmtPlacement[] placements, bool ignoreContainerProblems, bool createWorkOrder, bool activateWorkOrder, string workOrderNumber, double cycleTime);
|
||||
int smtSetupData(IMSApiSessionContextStruct sessionContext, string stationNumber, int functionMode, string[] smtSetupHeaderKeys, string[] smtSetupHeaderValues, out string[] smtSetupHeaderResultValues, string[] smtSerialNumberKeys, string[] smtSerialNumberValues, out string[] smtSerialNumberResultValues, string[] smtEventKeys, string[] smtEventValues, out string[] smtEventResultValues, string[] smtPlacementKeys, string[] smtPlacementValues);
|
||||
int trActivateWorkOrder(IMSApiSessionContextStruct sessionContext, string stationNumber, string workOrderNumber, string serialNumber, string serialNumberPos, int processLayer, int flag);
|
||||
int trAddSerialNumberToPool(IMSApiSessionContextStruct sessionContext, string stationNumber, string serialNumberPoolName, string[] serialNumberPoolKeys, string[] serialNumberPoolValues, out string[] serialNumberPoolResults);
|
||||
int trAddSerialNumberToSerialNumberPool(IMSApiSessionContextStruct sessionContext, string stationNumber, string serialNumber, string serialNumberPos, string serialNumberPoolName, out int state, out string partNumber, out string workOrderNumber);
|
||||
int trAssignSerialNumberForProductOrWorkOrder(IMSApiSessionContextStruct sessionContext, string stationNumber, string workOrderNumber, string partNumber, string bomVersion, string serialNumberRef, string serialNumberRefPos, int processLayer, SerialNumberData[] serialNumberArray, int activateWorkOrder);
|
||||
int trAssignSerialNumberMergeAndUploadState(IMSApiSessionContextStruct sessionContext, string stationNumber, int processLayer, string serialNumberRef, string serialNumberRefPos, SerialNumberData[] serialNumberArray, string serialNumberSlave, int doUploadState, int serialNumberState, int multiplePanel);
|
||||
int trChangePoolSerialNumber(IMSApiSessionContextStruct sessionContext, string stationNumber, string serialNumberPoolName, string[] poolSerialNumberKeys, string[] poolSerialNumberValues, out string[] poolSerialNumberResults);
|
||||
int trChangeSerialNumberPool(IMSApiSessionContextStruct sessionContext, string stationNumber, string serialNumberPoolName, KeyValue[] serialNumberPoolData);
|
||||
int trChangeWorkOrder(IMSApiSessionContextStruct sessionContext, string stationNumber, int lineFlag, string[] workorderResultKeys, out string[] workorderResultValues);
|
||||
int trCheckMergedPartsForSerialNumberComplete(IMSApiSessionContextStruct sessionContext, string stationNumber, string serialNumber, int serialNumberPos, int allMergedPartsVisible, int checkMultipleBoard, string[] mergePartsResultKeys, out string[] mergePartsResultValues);
|
||||
int trCheckSerialNumberState(IMSApiSessionContextStruct sessionContext, string stationNumber, int processLayer, int checkMultiBoard, string serialNumber, string serialNumberPos, string[] serialNumberStateResultKeys, out string[] serialNumberStateResultValues);
|
||||
int trCheckUserSkill(IMSApiSessionContextStruct sessionContext, string stationNumber, int processLayer, string userId, KeyValue[] checkUserSkillFilter);
|
||||
int trCreateSerialNumberPool(IMSApiSessionContextStruct sessionContext, string stationNumber, string serialNumberPoolName, string serialNumberPoolDesc, string changeOrderNumber, string infoTxt, int serialNumberPoolType);
|
||||
int trDeleteSerialNumberPool(IMSApiSessionContextStruct sessionContext, string stationNumber, string serialNumberPoolName);
|
||||
int trGetCapturedRepairHistoryData(IMSApiSessionContextStruct sessionContext, string stationNumber, int processLayer, KeyValue[] repairHistoryFilter, string[] failureDataResultKey, string[] failureSlipDataResultKey, out string[] failureDataResultValues, out string[] failureSlipDataResultValues);
|
||||
int trGetMergeHistory(IMSApiSessionContextStruct sessionContext, string stationNumber, KeyValue[] mergedHistoryFilters, string[] mergedHistoryResultKeys, out string[] mergedHistoryResultValues);
|
||||
int trGetMergeParts(IMSApiSessionContextStruct sessionContext, string stationNumber, string serialNumber, string serialNumberPos, int resolveDirection, int resolveLevel, string[] mergePartsResultKeys, out string[] mergePartsResultValues);
|
||||
int trGetNextProductionStep(IMSApiSessionContextStruct sessionContext, string stationNumber, string serialNumber, string serialNumberPos, int functionMode, int stateCheck, int confirmFlag, string[] productionStepResultKeys, out string[] productionStepResultValues);
|
||||
int trGetNextSerialNumber(IMSApiSessionContextStruct sessionContext, string stationNumber, string workOrderNumber, string partNumber, int numberOfRecords, out SerialNumberData[] serialNumberArray);
|
||||
int trGetPools(IMSApiSessionContextStruct sessionContext, string stationNumber, string serialNumberPoolName, string changeOrder, int snrPoolState, string[] serialNumberPoolResultKeys, out string[] serialNumberPoolResultValues);
|
||||
int trGetPoolSerialNumber(IMSApiSessionContextStruct sessionContext, string stationNumber, string serialNumberPoolName, string serialNumber, string serialNumberPos, int startPosition, int maxRowCount, int processingStateFlag, int snrStateFlag, string[] poolSerialNumberResultKeys, out string[] poolSerialNumberResultValues, out bool hasMore, out string outSerialNumberPoolName);
|
||||
int trGetProductQuantity(IMSApiSessionContextStruct sessionContext, string stationNumber, int processLayer, int functionMode, KeyValue[] workorderFilters, KeyValue[] filterDataArray, string[] productQuantityResultKeys, out string[] productQuantityResultValues);
|
||||
int trGetResultDataForSerialNumber(IMSApiSessionContextStruct sessionContext, string stationNumber, int processLayer, string serialNumber, int serialNumberPos, string type, string name, int allProductEntries, int onlyLastEntry, KeyValue[] resultDataFilters, string[] resultDataKeys, out string[] resultDataValues);
|
||||
int trGetSerialNumberActivityUploadInfo(IMSApiSessionContextStruct sessionContext, string stationNumber, string serialNumberRef, string serialNumberRefPos, KeyValue[] activityFilter, string[] activityDataResultKeys, out string[] activityDataResultValues);
|
||||
int trGetSerialNumberBySerialNumberRef(IMSApiSessionContextStruct sessionContext, string stationNumber, string serialNumberRef, string serialNumberRefPos, out SerialNumberData[] serialNumberArray);
|
||||
int trGetSerialNumberForWorkOrderAndWorkstep(IMSApiSessionContextStruct sessionContext, string stationNumber, int processLayer, string workOrderNumber, int sequenceType, int workstepNumber, int multiplePanel, int state, int maxRows, int confirmFlag, int sortFlag, string[] serialNumberResultKeys, out string[] serialNumberResultValues);
|
||||
int trGetSerialNumberHistoryData(IMSApiSessionContextStruct sessionContext, string stationNumber, string serialNumber, string serialNumberPos, int processLayer, int desolvingSerialNumber, int desolvingLevel, string[] bookingResultKeys, out string[] bookingResultValues, string[] failureDataResultKeys, out string[] failureDataResultValues, string[] failureSlipDataResultKeys, out string[] failureSlipDataResultValues, string[] measureDataResultKeys, out string[] measureDataResultValues, out string workOrderNumber, out string partNumber, out string customerPartNumber, out string partDesc, out string quantity, out long lastReportDate, out string lotNumber, out int isLocked);
|
||||
int trGetSerialNumberInfo(IMSApiSessionContextStruct sessionContext, string stationNumber, string serialNumber, string serialNumberPos, string[] serialNumberResultKeys, out string[] serialNumberResultValues);
|
||||
int trGetSerialNumberPoolInfo(IMSApiSessionContextStruct sessionContext, string stationNumber, string serialNumberPoolName, int workOrderInfo, string[] poolInfoResultKeys, out string[] poolInfoResultValues, out string changeOrder, out string partNumber, out string erpBomIndex, out string infoTxtChangeOrder, out string infoTxtSnrPool, out int qtyAssignedSerialNumbers, out int qtyIdentifiedSerialNumbers, out int qtyCOAssignedSerialNumbers, out int snrPoolState, out string snrPoolDescription);
|
||||
int trGetSerialNumberUploadInfo(IMSApiSessionContextStruct sessionContext, string stationNumber, int processLayer, string serialNumber, string serialNumberPos, int checkProcessStep, string[] uploadInfoResultKeys, out string[] uploadInfoResultValues);
|
||||
int trGetStationResult(IMSApiSessionContextStruct sessionContext, string stationNumber, string workorderNumber, string partNumber, int bomVersion, string bomIndex, string bomVersionErp, long fromDate, long toDate, string[] measurementNames, int functionMode, string[] stationResultKeys, out string[] stationResultValues);
|
||||
int trGetStationSetting(IMSApiSessionContextStruct sessionContext, string stationNumber, string[] stationSettingResultKeys, out string[] stationSettingResultValues);
|
||||
int trGetTestplanData(IMSApiSessionContextStruct sessionContext, string stationNumber, string serialNumber, string serialNumberPos, int processLayer, string workorderNumber, KeyValue[] testplanFilters, string[] varParamResultKeys, out string[] varParamResultValues, string[] varFailCodeResultKeys, out string[] varFailCodeResultValues, string[] attribParamResultKeys, out string[] attribParamResultValues, string[] attribParamValueResultKeys, out string[] attribParamValueResultValues, string[] attribFailCodeResultKeys, out string[] attribFailCodeResultValues);
|
||||
int trGetTopFailures(IMSApiSessionContextStruct sessionContext, string stationNumber, KeyValue[] trGetTopFailuresFilter, string[] topFailuresResultKeys, out string[] topFailuresResultValues);
|
||||
int trGetWorkOrderForStation(IMSApiSessionContextStruct sessionContext, string stationNumber, KeyValue[] workorderFilter, string[] workorderResultKeys, out string[] workorderResultValues);
|
||||
int trIdentifyPoolSerialNumber(IMSApiSessionContextStruct sessionContext, string stationNumber, string serialNumber, string serialNumberPos, string serialNumberPoolName);
|
||||
int trMergeParts(IMSApiSessionContextStruct sessionContext, string stationNumber, int processLayer, int duplicateSerialNumber, string serialNumberMaster, string serialNumberMasterPos, string serialNumberSlave, string serialNumberSlavePos);
|
||||
int trRemoveMergeParts(IMSApiSessionContextStruct sessionContext, string stationNumber, int processLayer, string serialNumberSlave, string serialNumberSlavePos, string textInfo);
|
||||
int trRemoveSerialNumberFromSerialNumberPool(IMSApiSessionContextStruct sessionContext, string stationNumber, string serialNumber, string serialNumberPos, string serialNumberPoolName);
|
||||
int trSimulateMerge(IMSApiSessionContextStruct sessionContext, string stationNumber, string serialNumberMaster, string serialNumberMasterPos, string workorderNumberMaster, string serialNumberSlave, string serialNumberSlavePos, string workorderNumberSlave, string[] simulateMergeResultKeys, out string[] simulateMergeResultValues);
|
||||
int trSplitPanel(IMSApiSessionContextStruct sessionContext, string stationNumber, string serialNumberRef, string serialNumberRefPos, int functionMode, string[] splitPanelKeys, string[] splitPanelValues, out string[] splitPanelResults);
|
||||
int trSwitchSerialNumber(IMSApiSessionContextStruct sessionContext, string stationNumber, string serialNumberRef, string serialNumberRefPos, ref SwitchSerialNumberData[] serialNumberArray);
|
||||
int trTestPaa(IMSApiSessionContextStruct sessionContext, string stationNumber, string serialNumber, int processLayer, int model, out int resultPaa, out string infoText);
|
||||
int trTestSpa(IMSApiSessionContextStruct sessionContext, string stationNumber, string serialNumber, int processLayer, int model, out int resultCp, out int resultCpk, out string infoText);
|
||||
int trUploadActivity(IMSApiSessionContextStruct sessionContext, string stationNumber, int processLayer, string serialNumberRef, string serialNumberRefPos, int serialNumberState, int duplicateSerialNumber, long bookDate, float cycleTime, string[] activityDataKeys, string[] activityDataValues, out string[] activityDataResults);
|
||||
int trUploadFailureAndResultData(IMSApiSessionContextStruct sessionContext, string stationNumber, int processLayer, string serialNumberRef, string serialNumberRefPos, int serialNumberState, int duplicateSerialNumber, float cycleTime, long bookDate, string[] measureKeys, string[] measureValues, out string[] measureResultValues, string[] failureKeys, string[] failureValues, out string[] failureResultValues, string[] failureSlipKeys, string[] failureSlipValues, out string[] failureSlipResultValues);
|
||||
int trUploadFailuresForMergedParts(IMSApiSessionContextStruct sessionContext, string stationNumber, KeyValue[] uploadMasterSerialNumberKeys, string[] uploadSlaveSerialNumberKeys, string[] uploadSlaveSerialNumberValues, out string[] uploadSlaveSerialNumberResults, string[] uploadFailuresForSlaveSerialNumberKeys, string[] uploadFailuresForSlaveSerialNumberValues, out string[] uploadFailuresForSlaveSerialNumberResults);
|
||||
int trUploadPmQuantity(IMSApiSessionContextStruct sessionContext, string stationNumber, int processLayer, string workOrderNumber, double passQty, double failQty, double scrapQty);
|
||||
int trUploadResultDataAndRecipe(IMSApiSessionContextStruct sessionContext, string stationNumber, int processLayer, int recipeVersionId, string serialNumberRef, string serialNumberRefPos, int serialNumberState, int duplicateSerialNumber, long bookDate, float cycleTime, int recipeVersionMode, string[] resultUploadKeys, string[] resultUploadValues, out string[] resultValues);
|
||||
int trUploadState(IMSApiSessionContextStruct sessionContext, string stationNumber, int processLayer, string serialNumberRef, string serialNumberRefPos, int serialNumberState, int duplicateSerialNumber, long bookDate, float cycleTime, string[] serialNumberUploadKeys, string[] serialNumberUploadValues, out string[] serialNumberResultValues);
|
||||
int trUploadStationResult(IMSApiSessionContextStruct sessionContext, string stationNumber, string partNumber, int bomVersion, string bomIndex, string bomVersionErp, string workOrderNumber, long bookDate, int serialUnitTrace, string[] stationResultUploadKeys, string[] stationResultUploadValues, out string[] stationResultValues);
|
||||
int trUploadTestplanResult(IMSApiSessionContextStruct sessionContext, string stationNumber, string serialNumber, string serialNumberPos, long bookDate, string[] workStepKeys, string[] workStepValues, out string[] workStepResults, string[] varUploadKeys, string[] varUploadValues, out string[] varUploadResults, string[] varFailUploadKeys, string[] varFailUploadValues, out string[] varFailUploadResults, string[] attribUploadKeys, string[] attribUploadValues, out string[] attribUploadResult, string[] attribFailUploadKeys, string[] attribFailUploadValues, out string[] attribFailUploadResults);
|
||||
int trVerifyMerge(IMSApiSessionContextStruct sessionContext, string stationNumber, string serialNumberSlave, string serialNumberSlavePos, string serialNumberMaster, string serialNumberMasterPos, int checkMultiBoard, out SerialNumberStateData[] serialNumberStateDataArray);
|
||||
int trVerifyMergeProduct(IMSApiSessionContextStruct sessionContext, string stationNumber, string partNumber, int bomVersion, string bomIndex, string serialNumberSlave, int level);
|
||||
}
|
||||
}
|
||||
|
||||
1871
interface/asm/dotnet/MesTools/ImsApi/ImsApiErrorCode.cs
Normal file
1871
interface/asm/dotnet/MesTools/ImsApi/ImsApiErrorCode.cs
Normal file
File diff suppressed because it is too large
Load Diff
36
interface/asm/dotnet/MesTools/ImsApi/ImsApiKey.cs
Normal file
36
interface/asm/dotnet/MesTools/ImsApi/ImsApiKey.cs
Normal file
@@ -0,0 +1,36 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace com.itac.mes.imsapi
|
||||
{
|
||||
/// <summary>
|
||||
/// Attribut für das automatische Mapping von Werten in Strukturen nach String-Arrays und umgekehrt
|
||||
/// </summary>
|
||||
[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property)]
|
||||
public class ImsApiKey : Attribute
|
||||
{
|
||||
/// <summary>
|
||||
/// String field.
|
||||
/// </summary>
|
||||
string key;
|
||||
|
||||
/// <summary>
|
||||
/// Attribute constructor.
|
||||
/// </summary>
|
||||
public ImsApiKey()
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get and set.
|
||||
/// </summary>
|
||||
public string Key
|
||||
{
|
||||
get { return this.key; }
|
||||
set { this.key = value; }
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
453
interface/asm/dotnet/MesTools/ImsApi/ImsApiMapTool.cs
Normal file
453
interface/asm/dotnet/MesTools/ImsApi/ImsApiMapTool.cs
Normal file
@@ -0,0 +1,453 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
|
||||
namespace com.itac.mes.imsapi
|
||||
{
|
||||
/// <summary>
|
||||
/// tool fuer das automatische Mapping von Werten in Strukturen nach String-Arrays und umgekehrt
|
||||
///
|
||||
/// Prinzip uebernommen aus dem ImsInterfaces, Klasse ImsApiMapTool
|
||||
/// </summary>
|
||||
/// <typeparam name="T"></typeparam>
|
||||
public class ImsApiMapTool<T>
|
||||
{
|
||||
|
||||
// von einem Typ
|
||||
private static Dictionary<Type, Dictionary<String, FieldInfo>> fieldMapperTable = new Dictionary<Type, Dictionary<String, FieldInfo>>();
|
||||
private static Dictionary<Type, Dictionary<String, PropertyInfo>> propertyMapperTable = new Dictionary<Type, Dictionary<String, PropertyInfo>>();
|
||||
|
||||
public static void clearClassCache(Type clazz)
|
||||
{
|
||||
Dictionary<String, FieldInfo> fieldKeyMapper = null;
|
||||
if (fieldMapperTable.ContainsKey(clazz))
|
||||
{
|
||||
fieldKeyMapper = fieldMapperTable[clazz];
|
||||
fieldMapperTable.Remove(clazz);
|
||||
}
|
||||
Dictionary<String, PropertyInfo> propertyKeyMapper = null;
|
||||
if (propertyMapperTable.ContainsKey(clazz))
|
||||
{
|
||||
propertyKeyMapper = propertyMapperTable[clazz];
|
||||
propertyMapperTable.Remove(clazz);
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// eine Abbildungstabelle fuer einen Typ ermitteln (Namen von Feldern und IMSAPI-Keys)
|
||||
/// </summary>
|
||||
/// <param name="clazz"></param>
|
||||
/// <returns></returns>
|
||||
protected Dictionary<String, FieldInfo> getFieldMapperTable(Type clazz)
|
||||
{
|
||||
Dictionary<String, FieldInfo> keyMapper = null;
|
||||
if (fieldMapperTable.ContainsKey(clazz))
|
||||
{
|
||||
keyMapper = fieldMapperTable[clazz];
|
||||
}
|
||||
else
|
||||
{
|
||||
keyMapper = new Dictionary<String, FieldInfo>();
|
||||
// welche ImsApiKeys werden auf welche Fields abgebildet
|
||||
// iterate over all fields
|
||||
FieldInfo[] fields = clazz.GetFields();
|
||||
foreach (FieldInfo field in fields)
|
||||
{
|
||||
// get relevant annotation
|
||||
object[] annotation = field.GetCustomAttributes(typeof(ImsApiKey), true);
|
||||
if (annotation != null && annotation.Length > 0)
|
||||
{
|
||||
// add field mappings
|
||||
keyMapper.Add(((ImsApiKey)annotation[0]).Key, field);
|
||||
}
|
||||
}
|
||||
fieldMapperTable.Add(clazz, keyMapper);
|
||||
}
|
||||
return keyMapper;
|
||||
}
|
||||
|
||||
protected Dictionary<String, PropertyInfo> getPropertyMapperTable(Type clazz)
|
||||
{
|
||||
Dictionary<String, PropertyInfo> keyMapper = null;
|
||||
if (propertyMapperTable.ContainsKey(clazz))
|
||||
{
|
||||
keyMapper = propertyMapperTable[clazz];
|
||||
}
|
||||
else
|
||||
{
|
||||
keyMapper = new Dictionary<String, PropertyInfo>();
|
||||
// welche ImsApiKeys werden auf welche Fields abgebildet
|
||||
// iterate over all fields
|
||||
PropertyInfo[] properties = clazz.GetProperties();
|
||||
foreach (PropertyInfo property in properties)
|
||||
{
|
||||
// get relevant annotation
|
||||
object[] annotation = property.GetCustomAttributes(typeof(ImsApiKey), true);
|
||||
if (annotation != null && annotation.Length > 0)
|
||||
{
|
||||
// add field mappings
|
||||
keyMapper.Add(((ImsApiKey)annotation[0]).Key, property);
|
||||
}
|
||||
}
|
||||
propertyMapperTable.Add(clazz, keyMapper);
|
||||
}
|
||||
return keyMapper;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// aus einem String-Array mit Keys und Werten eine Struktur erzeugen.
|
||||
/// alle Felder in der Struktur muessen dafuer mit dem Attribut [IMSAPIKEY]
|
||||
/// versehen sein
|
||||
/// </summary>
|
||||
/// <param name="clazz"></param>
|
||||
/// <param name="imsApiKeys"></param>
|
||||
/// <param name="imsApiValues"></param>
|
||||
/// <returns></returns>
|
||||
public T getStruct(Type clazz, string[] imsApiKeys, string[] imsApiValues)
|
||||
{
|
||||
if (clazz == null)
|
||||
{
|
||||
throw new ArgumentException("parameter clazz must not be null");
|
||||
}
|
||||
if (imsApiKeys == null)
|
||||
{
|
||||
throw new ArgumentException("parameter imsApiKeys must not be null");
|
||||
}
|
||||
if (imsApiValues == null)
|
||||
{
|
||||
throw new ArgumentException("parameter imsApiValues must not be null");
|
||||
}
|
||||
// Anzahl der Werte muss identisch sein mit der Anzahl der Keys
|
||||
if (imsApiKeys.Length != imsApiValues.Length)
|
||||
{
|
||||
throw new ArgumentException("parameter imsApiKeys and imsApiValues must have the same size");
|
||||
}
|
||||
Dictionary<String, FieldInfo> keyMapper = getFieldMapperTable(clazz);
|
||||
Dictionary<String, PropertyInfo> propertyKeyMapper = getPropertyMapperTable(clazz);
|
||||
|
||||
T instance = getInstance(clazz, imsApiKeys, imsApiValues, keyMapper, propertyKeyMapper, 0);
|
||||
|
||||
return instance;
|
||||
}
|
||||
|
||||
|
||||
|
||||
private T getInstance(Type clazz, String[] imsApiKeys, String[] imsApiValues, Dictionary<String, FieldInfo> keyMapper,
|
||||
Dictionary<String, PropertyInfo> propertyMapper, int baseIndex)
|
||||
{
|
||||
T instance = (T)Activator.CreateInstance(clazz);
|
||||
// now map all keyValues to fields
|
||||
for (int index = 0; index < imsApiKeys.Length; index++)
|
||||
{
|
||||
String key = imsApiKeys[index];
|
||||
String sValue = imsApiValues[baseIndex + index];
|
||||
if (!keyMapper.ContainsKey(key))
|
||||
{
|
||||
// dieser key ist nicht zur Abbildung definiert, d.h. es gibt keine Annotation in der Zielklasse mit diesem Key
|
||||
if (!propertyMapper.ContainsKey(key))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
PropertyInfo propInfo = propertyMapper[key];
|
||||
safeSetProperty(instance, propInfo, sValue);
|
||||
|
||||
continue;
|
||||
}
|
||||
FieldInfo f = keyMapper[key];
|
||||
safeSetField(instance, f, sValue);
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// aus einem String-Array mit Keys und Werten ein Array von Strukturen erzeugen.
|
||||
/// alle Felder in der Struktur muessen dafuer mit dem Attribut [IMSAPIKEY]
|
||||
/// versehen sein
|
||||
/// </summary>
|
||||
/// <param name="clazz"></param>
|
||||
/// <param name="imsApiKeys"></param>
|
||||
/// <param name="imsApiValues"></param>
|
||||
/// <returns></returns>
|
||||
public T[] getArray(Type clazz, String[] imsApiKeys, String[] imsApiValues)
|
||||
{
|
||||
// Check parameters
|
||||
if (clazz == null)
|
||||
{
|
||||
throw new ArgumentException("parameter clazz must not be null");
|
||||
}
|
||||
if (imsApiKeys == null)
|
||||
{
|
||||
throw new ArgumentException("parameter imsApiKeys must not be null");
|
||||
}
|
||||
if (imsApiValues == null || imsApiValues.Length == 0)
|
||||
{
|
||||
throw new ArgumentException("parameter imsApiValues must not be null");
|
||||
}
|
||||
// Anzahl der Werte muss ein ganzzahliges Vielfaches der Anzahl der Keys sein
|
||||
if ((imsApiValues.Length % imsApiKeys.Length) != 0)
|
||||
{
|
||||
throw new ArgumentException("parameter imsApiValues must be a multiple of imsApiKeys");
|
||||
}
|
||||
Dictionary<String, FieldInfo> keyMapper = getFieldMapperTable(clazz);
|
||||
Dictionary<String, PropertyInfo> propertyKeyMapper = getPropertyMapperTable(clazz);
|
||||
|
||||
int length = imsApiValues.Length / imsApiKeys.Length;
|
||||
T[] resultArray = (T[])Array.CreateInstance(clazz, length);
|
||||
|
||||
for (int baseIndex = 0; baseIndex < imsApiValues.Length; baseIndex += imsApiKeys.Length)
|
||||
{
|
||||
T instance = getInstance(clazz, imsApiKeys, imsApiValues, keyMapper, propertyKeyMapper, baseIndex);
|
||||
resultArray[baseIndex / imsApiKeys.Length] = instance;
|
||||
}
|
||||
return resultArray;
|
||||
}
|
||||
|
||||
|
||||
protected void safeSetField(T instance, FieldInfo field, String sValue)
|
||||
{
|
||||
//if ((field.getModifiers() & Modifier.PRIVATE) == Modifier.PRIVATE) {
|
||||
// field.setAccessible(true);
|
||||
//}
|
||||
try
|
||||
{
|
||||
if (field.FieldType == typeof(int) || field.FieldType == typeof(Int16) || field.FieldType == typeof(Int32) || field.FieldType == typeof(Int64))
|
||||
{
|
||||
try
|
||||
{
|
||||
field.SetValue(instance, Int32.Parse(sValue));
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
// replace all , by .
|
||||
string s = sValue.Replace(",", ".");
|
||||
CultureInfo culture = CultureInfo.CreateSpecificCulture("en-US");
|
||||
field.SetValue(instance, Convert.ToInt32(Double.Parse(s, culture)));
|
||||
}
|
||||
}
|
||||
else if (field.FieldType == typeof(String) || field.FieldType == typeof(string))
|
||||
{
|
||||
field.SetValue(instance, sValue);
|
||||
}
|
||||
//} else if (field.getType() == Boolean.class || field.getType() == boolean.class) {
|
||||
// field.setBoolean(instance, Boolean.parseBoolean(sValue));
|
||||
else if (field.FieldType == typeof(DateTime))
|
||||
{
|
||||
field.SetValue(instance, getDateValue(sValue));
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new ArgumentException("unknown type mapper for " + field.FieldType.Name);
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw new ArgumentException("unknown type mapper or invalid value for " + field.Name + ":" + sValue, e);
|
||||
}
|
||||
}
|
||||
|
||||
protected void safeSetProperty(T instance, PropertyInfo field, String sValue)
|
||||
{
|
||||
//if ((field.getModifiers() & Modifier.PRIVATE) == Modifier.PRIVATE) {
|
||||
// field.setAccessible(true);
|
||||
//}
|
||||
try
|
||||
{
|
||||
if (field.PropertyType== typeof(int) || field.PropertyType == typeof(Int16) || field.PropertyType == typeof(Int32) || field.PropertyType == typeof(Int64))
|
||||
{
|
||||
try
|
||||
{
|
||||
field.SetValue(instance, Int32.Parse(sValue), new object[] { });
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
// replace all , by .
|
||||
string s = sValue.Replace(",", ".");
|
||||
CultureInfo culture = CultureInfo.CreateSpecificCulture("en-US");
|
||||
field.SetValue(instance, Convert.ToInt32(Double.Parse(s, culture)), new object[] { });
|
||||
}
|
||||
}
|
||||
else if (field.PropertyType == typeof(String) || field.PropertyType == typeof(string))
|
||||
{
|
||||
field.SetValue(instance, sValue, new object[] { });
|
||||
}
|
||||
//} else if (field.getType() == Boolean.class || field.getType() == boolean.class) {
|
||||
// field.setBoolean(instance, Boolean.parseBoolean(sValue));
|
||||
else if (field.PropertyType == typeof(DateTime))
|
||||
{
|
||||
field.SetValue(instance, getDateValue(sValue), new object[] { });
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new ArgumentException("unknown type mapper for " + field.PropertyType.Name);
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw new ArgumentException("unknown type mapper or invalid value for " + field.Name + ":" + sValue, e);
|
||||
}
|
||||
}
|
||||
|
||||
public DateTime getDateValue(string sDateValue)
|
||||
{
|
||||
if (sDateValue == null || sDateValue.Equals(""))
|
||||
{
|
||||
return new DateTime(1899, 12, 31, 23, 59, 59, DateTimeKind.Utc);
|
||||
}
|
||||
string s = sDateValue.Replace(",", ".");
|
||||
CultureInfo culture = CultureInfo.CreateSpecificCulture("en-US");
|
||||
double millies = Double.Parse(sDateValue, culture);
|
||||
if (millies <= 1000)
|
||||
{
|
||||
return new DateTime(1899, 12, 31, 23, 59, 59, DateTimeKind.Utc);
|
||||
}
|
||||
// treat date values >= 30.12.3000 as infinite...
|
||||
if (millies >= 32535039600000)
|
||||
{
|
||||
return new DateTime(9999, 12, 31, 23, 59, 59, DateTimeKind.Utc);
|
||||
}
|
||||
DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
|
||||
DateTime expiry = epoch.AddMilliseconds(millies);
|
||||
return expiry;
|
||||
}
|
||||
|
||||
public String[] getValueArray(T[] value, String[] imsApiKeys)
|
||||
{
|
||||
if (value == null)
|
||||
{
|
||||
throw new ArgumentException("parameter value must not be null");
|
||||
}
|
||||
if (imsApiKeys == null)
|
||||
{
|
||||
throw new ArgumentException("parameter imsApiKeys must not be null");
|
||||
}
|
||||
if (value.Length == 0)
|
||||
{
|
||||
return new String[0];
|
||||
}
|
||||
// aus der uebergebenen Struktur ein String Array bilden, unter der Prämisse der Imsapikeys
|
||||
// Kein Element des ValueArray darf null sein !!!!!
|
||||
if (value[0] == null)
|
||||
{
|
||||
throw new ArgumentException("first element in value array must not be null");
|
||||
}
|
||||
|
||||
Dictionary<String, FieldInfo> keyMapper = getFieldMapperTable(value[0].GetType());
|
||||
|
||||
String[] resultArray = new String[imsApiKeys.Length * value.Length];
|
||||
// nicht in der Struktur enthaltene Keys führen zu Fehlern
|
||||
// in der Struktur enthaltene Keys, die nicht im imsapiKeysArray enthalten sind werden einfach ignoriert
|
||||
int startIndex = 0;
|
||||
foreach (T item in value)
|
||||
{
|
||||
toImsApiStringArray(item, resultArray, imsApiKeys, keyMapper, startIndex);
|
||||
startIndex += imsApiKeys.Length;
|
||||
}
|
||||
return resultArray;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// aus einer Struktur ein String-Array erzeugen; alle als Keys uerbegebenen Felder
|
||||
/// sind im String-Array in der Reihenfolge der imsApiKeys enthalten
|
||||
/// </summary>
|
||||
/// <param name="value"></param>
|
||||
/// <param name="imsApiKeys"></param>
|
||||
/// <returns></returns>
|
||||
public String[] getValueArray(T value, String[] imsApiKeys)
|
||||
{
|
||||
if (value == null)
|
||||
{
|
||||
throw new ArgumentException("parameter value must not be null");
|
||||
}
|
||||
if (imsApiKeys == null)
|
||||
{
|
||||
throw new ArgumentException("parameter imsApiKeys must not be null");
|
||||
}
|
||||
// aus der uebergebenen Struktur ein String Array bilden, unter der Prämisse der Imsapikeys
|
||||
Dictionary<String, FieldInfo> keyMapper = getFieldMapperTable(value.GetType());
|
||||
|
||||
String[] resultArray = new String[imsApiKeys.Length];
|
||||
// nicht in der Struktur enthaltene Keys führen zu Fehlern
|
||||
// in der Struktur enthaltene Keys, die nicht im imsapiKeysArray enthalten sind werden einfach ignoriert
|
||||
toImsApiStringArray(value, resultArray, imsApiKeys, keyMapper, 0);
|
||||
|
||||
return resultArray;
|
||||
}
|
||||
|
||||
protected void toImsApiStringArray(T value, String[] resultArray, String[] imsApiKeys,
|
||||
Dictionary<String, FieldInfo> keyMapper, int i)
|
||||
{
|
||||
int destinationIndex = i;
|
||||
foreach (String key in imsApiKeys)
|
||||
{
|
||||
if (!keyMapper.ContainsKey(key))
|
||||
{
|
||||
throw new ArgumentException("destination key '" + key + "' is not available in structure");
|
||||
}
|
||||
FieldInfo field = keyMapper[key];
|
||||
try
|
||||
{
|
||||
String imsapiString = safeGetField(field, value);
|
||||
resultArray[destinationIndex++] = imsapiString;
|
||||
}
|
||||
catch (NullReferenceException)
|
||||
{
|
||||
// field is null
|
||||
destinationIndex++;
|
||||
}
|
||||
catch (Exception )
|
||||
{
|
||||
destinationIndex++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected String safeGetField(FieldInfo field, T value)
|
||||
{
|
||||
try
|
||||
{
|
||||
Object o = field.GetValue(value);
|
||||
if (field.FieldType == typeof(int) || field.FieldType == typeof(Int16) || field.FieldType == typeof(Int32) || field.FieldType == typeof(Int64) )
|
||||
{
|
||||
return o.ToString();
|
||||
}
|
||||
else if (field.FieldType == typeof(string) || field.FieldType == typeof(String))
|
||||
{
|
||||
return o.ToString();
|
||||
}
|
||||
else if (field.FieldType == typeof(Boolean) || field.FieldType == typeof(bool))
|
||||
{
|
||||
bool b = (Boolean)o;
|
||||
if (b)
|
||||
{
|
||||
return "1";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "0";
|
||||
}
|
||||
}
|
||||
else if (field.FieldType == typeof(DateTime))
|
||||
{
|
||||
DateTime d = (DateTime)o;
|
||||
if (d == null)
|
||||
{
|
||||
return "0";
|
||||
}
|
||||
return "" + d.Ticks;// todo:correction
|
||||
}
|
||||
}
|
||||
catch (NullReferenceException)
|
||||
{
|
||||
return "";
|
||||
}
|
||||
catch (AccessViolationException)
|
||||
{
|
||||
// einfach ignorieren, dies sollte eigentlich nie vorkommen
|
||||
}
|
||||
throw new ArgumentException("unknown type mapper for " + field.FieldType.Name);
|
||||
}
|
||||
}
|
||||
}
|
||||
159
interface/asm/dotnet/MesTools/ImsApi/ImsApiProxy.cs
Normal file
159
interface/asm/dotnet/MesTools/ImsApi/ImsApiProxy.cs
Normal file
@@ -0,0 +1,159 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using com.itac.mes.imsapi.client.dotnet;
|
||||
using com.itac.mes.imsapi.domain.container;
|
||||
using System.Reflection;
|
||||
using System.Runtime.Remoting.Proxies;
|
||||
using System.Runtime.Remoting.Messaging;
|
||||
using com.itac.mes.tools;
|
||||
using System.Diagnostics;
|
||||
using MesTools.ImsApi;
|
||||
using System.Collections.Specialized;
|
||||
using System.Globalization;
|
||||
|
||||
namespace com.itac.mes.imsapi
|
||||
{
|
||||
/// <summary>
|
||||
/// Proxy for calling IMSAPI Functions
|
||||
/// all paramaters are logged automatically the same way as in the imsinterfaces
|
||||
/// </summary>
|
||||
public class ImsApiProxy : RealProxy
|
||||
{
|
||||
private IIMSApiDotNet delegateObject;
|
||||
public static bool parameterLogging = true;
|
||||
private ObjectEvaluator fieldEvaluator = new ObjectEvaluator();
|
||||
private Dictionary<string, MethodInfo> methods = new Dictionary<string, MethodInfo>();
|
||||
|
||||
|
||||
public ImsApiProxy(IIMSApiDotNet delegateObject)
|
||||
: base(typeof(IIMSApiDotNet))
|
||||
{
|
||||
this.delegateObject = delegateObject;
|
||||
|
||||
if (delegateObject != null)
|
||||
{
|
||||
MethodInfo[] apiMethodArray = typeof(IIMSApiDotNet).GetMethods();
|
||||
foreach (MethodInfo method in apiMethodArray)
|
||||
{
|
||||
if (methods.ContainsKey(method.Name))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
methods.Add(method.Name, method);
|
||||
LogHandler.log(Constants.LOGGER, TraceEventType.Verbose, "calling method " + method.Name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// calling the functions
|
||||
/// </summary>
|
||||
/// <param name="message"></param>
|
||||
/// <returns></returns>
|
||||
public override IMessage Invoke(IMessage message)
|
||||
{
|
||||
// start der Methode
|
||||
DateTime dtStart = DateTime.Now;
|
||||
IMethodCallMessage methodMsg = (IMethodCallMessage)message;
|
||||
MethodInfo methodInfo = methods[methodMsg.MethodName];
|
||||
|
||||
StringBuilder paramStr = new StringBuilder();
|
||||
// call api function on delegate object
|
||||
object result = methodInfo.Invoke(delegateObject, methodMsg.Args);
|
||||
|
||||
Dictionary<string, string[]> uploadValues = new Dictionary<string, string[]>();
|
||||
if (parameterLogging)
|
||||
{
|
||||
for (int i = 0; i < methodInfo.GetParameters().Length; i++)
|
||||
{
|
||||
ParameterInfo methodParameter = methodInfo.GetParameters()[i];
|
||||
if (!ObjectEvaluator.CLASSES_IN_ONE_LINE)
|
||||
{
|
||||
paramStr.Append(" ");
|
||||
}
|
||||
|
||||
// corresponding Key-Values?
|
||||
if (methodParameter.Name.EndsWith("Keys"))
|
||||
{
|
||||
// keep for evaluation of return values
|
||||
String baseName = methodParameter.Name.Substring(0, methodParameter.Name.Length - "Keys".Length);
|
||||
uploadValues.Add(baseName, (String[])methodMsg.Args[i]);
|
||||
|
||||
// are there some more parameters
|
||||
if (methodInfo.GetParameters().Length > (i + 1))
|
||||
{
|
||||
if (methodInfo.GetParameters()[i + 1].Name.StartsWith(baseName) &&
|
||||
|
||||
methodInfo.GetParameters()[i + 1].Name.EndsWith("Values"))
|
||||
{
|
||||
StringBuilder stb = new StringBuilder();
|
||||
MesTools.ImsApi.ImsApiTools.printKeyValues(stb, baseName, (String[])methodMsg.Args[i], (String[])methodMsg.Args[i + 1]);
|
||||
paramStr.Append(stb.ToString());
|
||||
paramStr.Append('\n');
|
||||
i += 1;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fieldEvaluator.evaluateObject(methodInfo.GetParameters()[i].Name, methodMsg.Args[i], paramStr);
|
||||
if (i < (methodInfo.GetParameters().Length - 1))
|
||||
{
|
||||
if (ObjectEvaluator.CLASSES_IN_ONE_LINE)
|
||||
{
|
||||
paramStr.Append(", ");
|
||||
}
|
||||
else
|
||||
{
|
||||
paramStr.Append("\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
StringBuilder returnValues = new StringBuilder();
|
||||
|
||||
|
||||
// calculate execution time
|
||||
DateTime dtEnd = DateTime.Now;
|
||||
long elapsedTicks = dtEnd.Ticks - dtStart.Ticks;
|
||||
TimeSpan elapsedSpan = new TimeSpan(elapsedTicks);
|
||||
|
||||
returnValues.Append(methodInfo.Name).Append("() completed in ").Append(elapsedSpan.ToString()).Append(" millies\n").Append(paramStr);
|
||||
if (parameterLogging)
|
||||
{
|
||||
StringBuilder stbResult = new StringBuilder();
|
||||
if (result != null)
|
||||
{
|
||||
HashSet<String> inArgNames = new HashSet<string>();
|
||||
for (int j = 0; j < methodMsg.InArgs.Length; j++)
|
||||
{
|
||||
inArgNames.Add(methodMsg.GetInArgName(j));
|
||||
}
|
||||
|
||||
List<string> orderOutNames = new List<string>();
|
||||
Dictionary<string, string[]> outValues = new Dictionary<string, string[]>();
|
||||
// alle out-args mit betrachten...
|
||||
for (int j = 0; j < methodMsg.Args.Length; j++)
|
||||
{
|
||||
if (!inArgNames.Contains(methodMsg.GetArgName(j)))
|
||||
{
|
||||
Debug.WriteLine("found out arg " + methodMsg.GetArgName(j));
|
||||
orderOutNames.Add(methodMsg.GetArgName(j));
|
||||
object k = methodMsg.GetArg(j);
|
||||
outValues.Add(methodMsg.GetArgName(j), (string[])methodMsg.GetArg(j));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
stbResult.Append(new ImsApiResultEvaluator().evaluate(result, orderOutNames, outValues, uploadValues));
|
||||
returnValues.Append("\nreturn:\n" + stbResult.ToString());
|
||||
}
|
||||
}
|
||||
LogHandler.log(Constants.LOGGER, TraceEventType.Information, returnValues.ToString());
|
||||
|
||||
return new ReturnMessage(result, methodMsg.Args, 0, methodMsg.LogicalCallContext, methodMsg);
|
||||
}
|
||||
}
|
||||
}
|
||||
100
interface/asm/dotnet/MesTools/ImsApi/ImsApiResultEvaluator.cs
Normal file
100
interface/asm/dotnet/MesTools/ImsApi/ImsApiResultEvaluator.cs
Normal file
@@ -0,0 +1,100 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Specialized;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
|
||||
namespace MesTools.ImsApi
|
||||
{
|
||||
public class ImsApiResultEvaluator
|
||||
{
|
||||
|
||||
public StringBuilder evaluate(Object result, List<string> orderedOutArgs, Dictionary<String, String[]> resultValueMap, Dictionary<String, String[]> uploadValues)
|
||||
{
|
||||
// check preconditions
|
||||
StringBuilder stb = new StringBuilder();
|
||||
if (result == null)
|
||||
{
|
||||
stb.Append("(null");
|
||||
return stb;
|
||||
}
|
||||
// print type info
|
||||
ObjectEvaluator oe = new ObjectEvaluator();
|
||||
stb.Append('(').Append(result).Append(")\n");
|
||||
|
||||
// handle all out params...
|
||||
if (orderedOutArgs != null && orderedOutArgs.Count > 0)
|
||||
{
|
||||
// evaluate return values (key-value arrays...)
|
||||
foreach (string fieldName in orderedOutArgs)
|
||||
{
|
||||
// find the stationResultUploadKeys for out stationResultValues
|
||||
string[] values = resultValueMap[fieldName];
|
||||
Debug.WriteLine(fieldName);
|
||||
|
||||
string[] keys = null;
|
||||
// key-information available for this parameter?
|
||||
string baseName = fieldName;
|
||||
if (fieldName.EndsWith("Values") && uploadValues != null)
|
||||
{
|
||||
|
||||
if (uploadValues.ContainsKey(fieldName))
|
||||
{
|
||||
keys = uploadValues[fieldName];
|
||||
}
|
||||
else
|
||||
{
|
||||
// replace "Values" by "Upload"
|
||||
baseName = fieldName.Substring(0, fieldName.Length - 6) + "Upload";
|
||||
if (uploadValues.ContainsKey(baseName))
|
||||
{
|
||||
keys = uploadValues[baseName];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (keys != null)
|
||||
{
|
||||
Object v = new String[] { };
|
||||
try
|
||||
{
|
||||
v = values;
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
// explicitly no error handling
|
||||
}
|
||||
// print formatted imsapi-key-Value
|
||||
ImsApiTools.printKeyValues(stb, baseName, keys, (String[])v);
|
||||
stb.Append('\n');
|
||||
}
|
||||
continue;
|
||||
}
|
||||
// print ordinary values
|
||||
/* try
|
||||
{
|
||||
Object v = field.GetValue(result);
|
||||
StringBuilder pstb = new StringBuilder();
|
||||
oe.evaluateObject(field.Name, v, pstb);
|
||||
stb.Append(pstb.ToString()).Append('\n');
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
// explicitly no error handling
|
||||
}*/
|
||||
}
|
||||
}
|
||||
|
||||
foreach (FieldInfo field in result.GetType().GetFields())
|
||||
{
|
||||
|
||||
}
|
||||
return stb;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
257
interface/asm/dotnet/MesTools/ImsApi/ImsApiTools.cs
Normal file
257
interface/asm/dotnet/MesTools/ImsApi/ImsApiTools.cs
Normal file
@@ -0,0 +1,257 @@
|
||||
using System;
|
||||
using System.Text;
|
||||
using com.itac.mes.imsapi;
|
||||
using com.itac.mes.imsapi.domain.container;
|
||||
|
||||
namespace MesTools.ImsApi
|
||||
{
|
||||
public class ImsApiTools
|
||||
{
|
||||
|
||||
public static String[] getKeys(params ImsApiKey[] configKeys)
|
||||
{
|
||||
if (configKeys == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
String[] retArray = new String[configKeys.Length];
|
||||
for (int i = 0; i < configKeys.Length; i++)
|
||||
{
|
||||
retArray[i] = configKeys[i].Key;
|
||||
}
|
||||
return retArray;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param imsapiKeys
|
||||
* @param values
|
||||
* @return null, wenn einer der Parameter null ist oder wenn die Arrays unterschiedliche Längen haben
|
||||
*/
|
||||
public static KeyValue[] getKeyValue(ImsApiKey[] imsapiKeys, String[] values)
|
||||
{
|
||||
if (imsapiKeys == null || values == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
if (imsapiKeys.Length != values.Length)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
KeyValue[] result = new KeyValue[imsapiKeys.Length];
|
||||
for (int i = 0; i < imsapiKeys.Length; i++)
|
||||
{
|
||||
result[i] = new KeyValue(imsapiKeys[i].Key, values[i]);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public static String toString(String fieldName, ImsApiKey[] imsApiKeys, String[] values)
|
||||
{
|
||||
// geordnete Ausgabe der Values (lesbar)
|
||||
try
|
||||
{
|
||||
StringBuilder stb = new StringBuilder();
|
||||
// sind die Daten ein Array??
|
||||
if (imsApiKeys == null)
|
||||
{
|
||||
return "IMSAPITools print problem: imsapiKeys=null";
|
||||
}
|
||||
if (values == null)
|
||||
{
|
||||
return "IMSAPITools print problem: values array=null";
|
||||
}
|
||||
if (imsApiKeys.Length == 0)
|
||||
{
|
||||
return "IMSAPITools print problem: imsapiKeys.length=0";
|
||||
}
|
||||
bool isArray = imsApiKeys.Length < values.Length;
|
||||
if (isArray)
|
||||
{
|
||||
int arrayCount = values.Length / imsApiKeys.Length;
|
||||
// arrayCount == 0 kann nicht vorkommen
|
||||
// if (arrayCount == 0) {
|
||||
// printKeyValues(stb, fieldName, imsApiKeys, values, 0, arrayCount);
|
||||
// }
|
||||
for (int i = 0; i < arrayCount; i++)
|
||||
{
|
||||
printKeyValues(stb, fieldName, imsApiKeys, values, i, arrayCount);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
stb.Append(fieldName);
|
||||
if (!fieldName.Equals(""))
|
||||
{
|
||||
stb.Append('\n');
|
||||
}
|
||||
|
||||
printKeyValues(stb, fieldName, imsApiKeys, values, -1, -1);
|
||||
}
|
||||
return stb.ToString();
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
return "IMSAPITools print problem";
|
||||
}
|
||||
}
|
||||
|
||||
private static void printKeyValues(StringBuilder stb, String fieldName, ImsApiKey[] imsApiKeys, String[] values, int arrayIndex,
|
||||
int arrayCount)
|
||||
{
|
||||
int baseIndex = 0;
|
||||
if (arrayIndex >= 0)
|
||||
{
|
||||
baseIndex = arrayIndex * imsApiKeys.Length;
|
||||
}
|
||||
stb.Append(fieldName);
|
||||
if (arrayIndex >= 0)
|
||||
{
|
||||
stb.Append('[').Append(arrayIndex).Append("]/[").Append(arrayCount).Append(']');
|
||||
}
|
||||
if (!fieldName.Equals("") && arrayIndex >= 0)
|
||||
{
|
||||
stb.Append('\n');
|
||||
}
|
||||
if (arrayCount <= 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
for (int k = 0; k < imsApiKeys.Length; k++)
|
||||
{
|
||||
stb.Append(" ").Append(imsApiKeys[k].Key);
|
||||
// Array-index ausgeben
|
||||
stb.Append(':');
|
||||
stb.Append(values[baseIndex + k]).Append('\n');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* print keys and values in a formatted way for column-oriented logging
|
||||
* <p>
|
||||
* <code>
|
||||
* key1: value1, key2: value2, key3: value3, key4: value4,<br>
|
||||
* key5: value5
|
||||
* </code>
|
||||
*
|
||||
* @param baseName
|
||||
* may be null, no printing, no line feed
|
||||
* @param imsApiKeys
|
||||
* @param values
|
||||
* @return
|
||||
*/
|
||||
public static void printKeyValues(StringBuilder stb, String baseName, String[] imsApiKeys, String[] values)
|
||||
{
|
||||
if (imsApiKeys == null || values == null)
|
||||
{
|
||||
stb.Append("keys/values = null");
|
||||
return;
|
||||
}
|
||||
if (values.Length == 0)
|
||||
{
|
||||
stb.Append("");
|
||||
return;
|
||||
}
|
||||
if ((values.Length % imsApiKeys.Length) != 0)
|
||||
{
|
||||
stb.Append("keys/values unequal size");
|
||||
return;
|
||||
}
|
||||
int maxColumns = 132; // print-width
|
||||
// find key-length and value length over all...
|
||||
int keyLength = 0;
|
||||
foreach (String item in imsApiKeys)
|
||||
{
|
||||
keyLength = Math.Max(keyLength, item.Length);
|
||||
}
|
||||
int valueLength = 0;
|
||||
foreach (String value in values)
|
||||
{
|
||||
valueLength = Math.Max(valueLength, value.Length);
|
||||
}
|
||||
|
||||
bool isArray = values.Length > imsApiKeys.Length;
|
||||
|
||||
int arrayIndex = 0;
|
||||
int column = 0;
|
||||
|
||||
int valueStartIndex = 0;
|
||||
if (baseName != null)
|
||||
{
|
||||
stb.Append(baseName);
|
||||
if (baseName.Length > 0)
|
||||
{
|
||||
stb.Append(':');
|
||||
}
|
||||
stb.Append('\n');
|
||||
}
|
||||
while (valueStartIndex < values.Length)
|
||||
{
|
||||
if (isArray)
|
||||
{
|
||||
// print index-key
|
||||
if (arrayIndex > 0)
|
||||
{
|
||||
stb.Append('\n');
|
||||
column = 0;
|
||||
}
|
||||
stb.Append('[').Append(arrayIndex).Append("]\n");
|
||||
}
|
||||
|
||||
for (int k = 0; k < imsApiKeys.Length; k++)
|
||||
{
|
||||
if (column == 0)
|
||||
{
|
||||
stb.Append(" ");
|
||||
column += 3;
|
||||
}
|
||||
|
||||
stb.Append(fillString(imsApiKeys[k], keyLength)).Append(": ");
|
||||
column += (keyLength + 2 + valueLength);
|
||||
if (k < (imsApiKeys.Length - 1))
|
||||
{
|
||||
stb.Append(fillString(values[valueStartIndex + k], valueLength, ','));
|
||||
column += 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
stb.Append(fillString(values[valueStartIndex + k], valueLength));
|
||||
}
|
||||
|
||||
if (column > maxColumns)
|
||||
{
|
||||
stb.Append('\n');
|
||||
column = 0;
|
||||
}
|
||||
}
|
||||
arrayIndex++;
|
||||
valueStartIndex += imsApiKeys.Length;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Fills a string to the given length with spaces, optionally Append a closig character.
|
||||
*
|
||||
* @param name
|
||||
* the string to be filled
|
||||
* @param keyLength
|
||||
* the resulting string should have this length
|
||||
* @param closingChar
|
||||
* optional; if given this is Appended to the string
|
||||
* @return the filled string with the given length
|
||||
*/
|
||||
private static String fillString(String name, int keyLength, params char[] closingChar)
|
||||
{
|
||||
StringBuilder stb = new StringBuilder(name);
|
||||
if (closingChar.Length > 0)
|
||||
{
|
||||
stb.Append(closingChar[0]);
|
||||
}
|
||||
while (stb.Length <= keyLength)
|
||||
{
|
||||
stb.Append(' ');
|
||||
}
|
||||
return stb.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
447
interface/asm/dotnet/MesTools/ImsApi/ObjectEvaluator.cs
Normal file
447
interface/asm/dotnet/MesTools/ImsApi/ObjectEvaluator.cs
Normal file
@@ -0,0 +1,447 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using MesTools.ImsApi;
|
||||
|
||||
namespace MesTools.ImsApi
|
||||
{
|
||||
public class ObjectEvaluator
|
||||
{
|
||||
// should a class be printed in one line or every field of a class in a separate line
|
||||
|
||||
public static bool CLASSES_IN_ONE_LINE;
|
||||
private static TypePrinter typePrinter = new TypePrinter();
|
||||
private static ArrayPrinter arrayPrinter = new ArrayPrinter(typePrinter);
|
||||
private static FieldPrinter fieldNamePrinter = new FieldPrinter();
|
||||
|
||||
public void evaluateObject(String extFieldName, Object object_, StringBuilder stringBuffer)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (object_ == null)
|
||||
{
|
||||
stringBuffer.Append("null");
|
||||
return;
|
||||
}
|
||||
if (isPrimitiveClass(object_.GetType())) // auch String und StringBuffer direkt
|
||||
// anzeigen
|
||||
{
|
||||
typePrinter.print(typePrinter.getSimpleTypeName(object_.GetType()), stringBuffer);
|
||||
fieldNamePrinter.print(extFieldName, stringBuffer);
|
||||
if (extFieldName.Equals("password"))
|
||||
{
|
||||
stringBuffer.Append("*****");
|
||||
}
|
||||
else
|
||||
{
|
||||
stringBuffer.Append(object_.ToString());
|
||||
}
|
||||
return;
|
||||
}
|
||||
else if (object_.GetType().IsArray)
|
||||
{
|
||||
evaluateArrayWithoutfield(object_, stringBuffer);
|
||||
return;
|
||||
}
|
||||
|
||||
typePrinter.print(object_.GetType().Name, stringBuffer);
|
||||
fieldNamePrinter.print(extFieldName, stringBuffer);
|
||||
FieldInfo[] fields = object_.GetType().GetFields();
|
||||
if (fields.Length > 1)
|
||||
{
|
||||
stringBuffer.Append('\n');
|
||||
}
|
||||
// alle Felder auflisten
|
||||
for (int i = 0; i < fields.Length; i++)
|
||||
{
|
||||
// if ((fields[i].getModifiers() & Modifier.PRIVATE) == Modifier.PRIVATE || (fields[i].getModifiers() & Modifier.PROTECTED) == Modifier.PROTECTED)
|
||||
// {
|
||||
// continue;
|
||||
// }
|
||||
Type fieldType = fields[i].GetType();
|
||||
fieldNamePrinter.printCounter(i, stringBuffer);
|
||||
if (isPrimitiveClass(fieldType))
|
||||
{
|
||||
evalPrimitiveField(fields[i], object_, stringBuffer, "");
|
||||
}
|
||||
else if (fieldType.Equals(typeof(String)) || fieldType.Equals(typeof(StringBuilder)))
|
||||
{
|
||||
printString(object_, fields[i], stringBuffer);
|
||||
}
|
||||
else if (fieldType.IsArray)
|
||||
{
|
||||
evalArray(fields[i], object_, stringBuffer);
|
||||
}
|
||||
else
|
||||
{
|
||||
// komplexe Typen
|
||||
Object subObject = fields[i].GetValue(object_);
|
||||
evalStructuredField(fields[i], subObject, stringBuffer);
|
||||
}
|
||||
|
||||
if (i < (fields.Length - 1))
|
||||
{
|
||||
if (CLASSES_IN_ONE_LINE)
|
||||
{
|
||||
stringBuffer.Append(", ");
|
||||
}
|
||||
else
|
||||
{
|
||||
stringBuffer.Append("\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception t)
|
||||
{
|
||||
throw t;
|
||||
}
|
||||
}
|
||||
|
||||
private void printString(Object object_, FieldInfo field, StringBuilder stringBuffer)
|
||||
{
|
||||
// wert ausgeben
|
||||
if (!CLASSES_IN_ONE_LINE)
|
||||
{
|
||||
stringBuffer.Append(" ");
|
||||
}
|
||||
typePrinter.print("String", stringBuffer);
|
||||
fieldNamePrinter.print(field.Name, stringBuffer);
|
||||
if (object_ == null)
|
||||
{
|
||||
stringBuffer.Append("null");
|
||||
return;
|
||||
}
|
||||
|
||||
Object subObject = field.GetValue(object_);
|
||||
if (subObject == null)
|
||||
{
|
||||
stringBuffer.Append("null");
|
||||
}
|
||||
else
|
||||
{
|
||||
stringBuffer.Append(subObject.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
private void evaluateArrayWithoutfield(Object object_, StringBuilder stringBuffer)
|
||||
{
|
||||
if (object_ == null)
|
||||
{
|
||||
stringBuffer.Append("null");
|
||||
return;
|
||||
}
|
||||
|
||||
if (object_.GetType().Equals(typeof(long[])))
|
||||
{
|
||||
arrayPrinter.print(null, (long[])object_, stringBuffer);
|
||||
}
|
||||
else if (object_.GetType().Equals(typeof(int[])))
|
||||
{
|
||||
arrayPrinter.print(null, (int[])object_, stringBuffer);
|
||||
}
|
||||
else if (object_.GetType().Equals(typeof(short[])))
|
||||
{
|
||||
arrayPrinter.print(null, (short[])object_, stringBuffer);
|
||||
}
|
||||
else if (object_.GetType().Equals(typeof(byte[])))
|
||||
{
|
||||
arrayPrinter.print(null, (byte[])object_, stringBuffer);
|
||||
}
|
||||
else if (object_.GetType().Equals(typeof(bool[])))
|
||||
{
|
||||
arrayPrinter.print(null, (bool[])object_, stringBuffer);
|
||||
}
|
||||
else if (object_.GetType().Equals(typeof(double[])))
|
||||
{
|
||||
arrayPrinter.print(null, (double[])object_, stringBuffer);
|
||||
}
|
||||
else if (object_.GetType().Equals(typeof(float[])))
|
||||
{
|
||||
arrayPrinter.print(null, (float[])object_, stringBuffer);
|
||||
}
|
||||
else if (object_.GetType().Equals(typeof(char[])))
|
||||
{
|
||||
arrayPrinter.print(null, (char[])object_, stringBuffer);
|
||||
}
|
||||
else if (object_.GetType().Equals(typeof(String[])))
|
||||
{
|
||||
arrayPrinter.print(null, (String[])object_, stringBuffer);
|
||||
}
|
||||
else if (object_.GetType().Equals(typeof(StringBuilder[])))
|
||||
{
|
||||
arrayPrinter.print(null, (StringBuilder[])object_, stringBuffer);
|
||||
}
|
||||
else if (object_.GetType().Equals(typeof(Int16[])))
|
||||
{
|
||||
arrayPrinter.print(null, (Int16[])object_, stringBuffer);
|
||||
}
|
||||
else if (object_.GetType().Equals(typeof(Int16[])))
|
||||
{
|
||||
arrayPrinter.print(null, (Byte[])object_, stringBuffer);
|
||||
}
|
||||
else if (object_.GetType().Equals(typeof(Double[])))
|
||||
{
|
||||
arrayPrinter.print(null, (Double[])object_, stringBuffer);
|
||||
}
|
||||
else if (object_.GetType().Equals(typeof(Boolean[])))
|
||||
{
|
||||
arrayPrinter.print(null, (Boolean[])object_, stringBuffer);
|
||||
}
|
||||
else if (object_.GetType().Equals(typeof(Char[])))
|
||||
{
|
||||
arrayPrinter.print(null, (Char[])object_, stringBuffer);
|
||||
}
|
||||
else
|
||||
{
|
||||
Object[] unknownArray = (Object[])object_;
|
||||
if (unknownArray.Length > 0)
|
||||
{
|
||||
evalArray(unknownArray, null, stringBuffer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void evalArray(Object[] unknownArray, String varName, StringBuilder stringBuffer)
|
||||
{
|
||||
// spezielle Type-information für das Array
|
||||
// spezielle Type-information für das Array
|
||||
if (varName != null)
|
||||
{
|
||||
fieldNamePrinter.print(varName, stringBuffer);
|
||||
}
|
||||
if (unknownArray == null)
|
||||
{
|
||||
stringBuffer.Append("[null]\n");
|
||||
return;
|
||||
}
|
||||
if (unknownArray == null)
|
||||
{
|
||||
stringBuffer.Append("null");
|
||||
return;
|
||||
}
|
||||
|
||||
if (true)
|
||||
{
|
||||
typePrinter.print(unknownArray.GetType().Name, stringBuffer);
|
||||
stringBuffer.Append('[').Append(unknownArray.Length).Append("]\n");
|
||||
}
|
||||
|
||||
String indentation = " ";
|
||||
for (int index = 0; index < unknownArray.Length; index++)
|
||||
{
|
||||
// typePrinter.print(unknownArray.getClass().getSimpleName(), stringBuffer);
|
||||
if (index >= ArrayPrinter.MAX_ARRAY_SIZE)
|
||||
{
|
||||
stringBuffer.Append("output limited to ").Append(ArrayPrinter.MAX_ARRAY_SIZE).Append(" items\n");
|
||||
break;
|
||||
}
|
||||
stringBuffer.Append(indentation).Append('[').Append(index).Append("]");
|
||||
if (unknownArray[index] == null)
|
||||
{
|
||||
stringBuffer.Append(":null");
|
||||
}
|
||||
else
|
||||
{
|
||||
// z.B. ein Array of Long[] wird dargestellt als long[]
|
||||
if (isPrimitiveClass(unknownArray[index].GetType()))
|
||||
{
|
||||
evalPrimitiveField(unknownArray[index], stringBuffer, indentation);
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
FieldInfo[] fields = unknownArray[index].GetType().GetFields();
|
||||
// alle Felder auflisten
|
||||
for (int i = 0; i < fields.Length; i++)
|
||||
{
|
||||
if (i == 0 && !CLASSES_IN_ONE_LINE)
|
||||
{
|
||||
stringBuffer.Append("\n");
|
||||
}
|
||||
|
||||
// if ((fields[i].getModifiers() & Modifier.PRIVATE) == Modifier.PRIVATE || (fields[i].getModifiers() & Modifier.PROTECTED) == Modifier.PROTECTED)
|
||||
// {
|
||||
// continue;
|
||||
// }
|
||||
fieldNamePrinter.printCounter(i, stringBuffer);
|
||||
if (isPrimitiveClass(fields[i].GetType()))
|
||||
{
|
||||
evalPrimitiveField(fields[i], unknownArray[index], stringBuffer, indentation);
|
||||
}
|
||||
else if (fields[i].GetType().IsArray)
|
||||
{
|
||||
evalArray(fields[i], unknownArray[index], stringBuffer);
|
||||
}
|
||||
else
|
||||
{
|
||||
stringBuffer.Append(indentation);
|
||||
printString(unknownArray[index], fields[i], stringBuffer);
|
||||
}
|
||||
if (i < fields.Length - 1)
|
||||
{
|
||||
if (!CLASSES_IN_ONE_LINE)
|
||||
{
|
||||
stringBuffer.Append("\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
stringBuffer.Append(", ");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (index < unknownArray.Length - 1)
|
||||
{
|
||||
stringBuffer.Append('\n');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void evalPrimitiveField(Object object_, StringBuilder stringbuffer, String indentation)
|
||||
{
|
||||
|
||||
if (!CLASSES_IN_ONE_LINE)
|
||||
{
|
||||
stringbuffer.Append(indentation).Append(" ");
|
||||
}
|
||||
if (object_ == null)
|
||||
{
|
||||
stringbuffer.Append("null");
|
||||
return;
|
||||
}
|
||||
stringbuffer.Append(object_);
|
||||
}
|
||||
|
||||
/**
|
||||
* isPrimitive() liefert true fuer int, long, etc. diese Methode liefert true, wenn die Klasse eine Klasse fuer einen
|
||||
* primitiven Type ist
|
||||
*
|
||||
* @param class1
|
||||
* @return
|
||||
*/
|
||||
public bool isPrimitiveClass(Type class1)
|
||||
{
|
||||
return class1.Namespace.StartsWith("System");
|
||||
// (class1 == Integer.class || class1 == Short.class || class1 == Byte.class || class1 == Long.class
|
||||
// || class1 == String.class || class1 == StringBuffer.class || class1 == Boolean.class || class1 == Float.class
|
||||
// || class1 == Double.class || class1 == Character.class);
|
||||
}
|
||||
|
||||
private void evalPrimitiveField(FieldInfo field, Object object_, StringBuilder stringbuffer, String indentation)
|
||||
{
|
||||
if (!CLASSES_IN_ONE_LINE)
|
||||
{
|
||||
stringbuffer.Append(indentation).Append(" ");
|
||||
}
|
||||
Type fieldType = field.GetType();
|
||||
typePrinter.print(field.GetType().Name, stringbuffer);
|
||||
fieldNamePrinter.print(field.Name, stringbuffer);
|
||||
|
||||
if (field.GetValue(object_) == null)
|
||||
{
|
||||
stringbuffer.Append("null");
|
||||
return;
|
||||
}
|
||||
|
||||
/* if (fieldType == Boolean.class || fieldType == boolean.class) {
|
||||
stringbuffer.Append(field.getBoolean(object));
|
||||
} else if (fieldType == Integer.class || fieldType == int.class) {
|
||||
stringbuffer.Append(field.getInt(object));
|
||||
} else if (fieldType == Short.class || fieldType == short.class) {
|
||||
stringbuffer.Append(field.getShort(object));
|
||||
} else if (fieldType == Byte.class || fieldType == byte.class) {
|
||||
stringbuffer.Append(field.getByte(object));
|
||||
} else if (fieldType == Long.class || fieldType == long.class) {
|
||||
stringbuffer.Append(field.getLong(object));
|
||||
} else if (fieldType == Character.class || fieldType == char.class) {
|
||||
stringbuffer.Append(field.getChar(object));
|
||||
} else if (fieldType == Double.class || fieldType == double.class) {
|
||||
stringbuffer.Append(field.getDouble(object));
|
||||
} else if (fieldType == Float.class || fieldType == float.class) {
|
||||
stringbuffer.Append(field.getFloat(object));
|
||||
}*/
|
||||
}
|
||||
|
||||
private void evalStructuredField(FieldInfo field, Object object_, StringBuilder stringBuffer)
|
||||
{
|
||||
String indentation = " ";
|
||||
if (object_ == null)
|
||||
{
|
||||
stringBuffer.Append("null");
|
||||
return;
|
||||
}
|
||||
FieldInfo[] fields = object_.GetType().GetFields();
|
||||
// alle Felder auflisten
|
||||
for (int i = 0; i < fields.Length; i++)
|
||||
{
|
||||
|
||||
// if ((fields[i].getModifiers() & Modifier.PRIVATE) == Modifier.PRIVATE || (fields[i].getModifiers() & Modifier.PROTECTED) == Modifier.PROTECTED)
|
||||
// {
|
||||
// fields[i].setAccessible(true);
|
||||
// }
|
||||
|
||||
if (isPrimitiveClass(fields[i].GetType()))
|
||||
{
|
||||
evalPrimitiveField(fields[i], object_, stringBuffer, indentation);
|
||||
}
|
||||
else if (fields[i].GetType().IsArray)
|
||||
{
|
||||
evalArray(fields[i], object_, stringBuffer);
|
||||
}
|
||||
else if (fields[i].GetType().Equals(typeof(String)) || fields[i].GetType().Equals(
|
||||
typeof(StringBuilder)))
|
||||
{
|
||||
printString(object_, fields[i], stringBuffer);
|
||||
}
|
||||
// else
|
||||
// {
|
||||
// evalStructuredField(fields[i], object, stringBuffer);
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
private void evalArray(FieldInfo field, Object object_, StringBuilder stringBuffer)
|
||||
{
|
||||
if (object_ == null)
|
||||
{
|
||||
stringBuffer.Append("null");
|
||||
return;
|
||||
}
|
||||
|
||||
String fieldName = field.Name;
|
||||
try
|
||||
{
|
||||
Object simpleObject = field.GetValue(object_);
|
||||
Type classOfObject = simpleObject.GetType();
|
||||
/* if (classOfObject == long[].class) {
|
||||
arrayPrinter.print(fieldName, (long[]) simpleObject, stringBuffer);
|
||||
} else if (classOfObject == int[].class) {
|
||||
arrayPrinter.print(fieldName, (int[]) simpleObject, stringBuffer);
|
||||
} else if (classOfObject == short[].class) {
|
||||
arrayPrinter.print(fieldName, (short[]) simpleObject, stringBuffer);
|
||||
} else if (classOfObject == byte[].class) {
|
||||
arrayPrinter.print(fieldName, (byte[]) simpleObject, stringBuffer);
|
||||
} else if (classOfObject == float[].class) {
|
||||
arrayPrinter.print(fieldName, (float[]) simpleObject, stringBuffer);
|
||||
} else if (classOfObject == double[].class) {
|
||||
arrayPrinter.print(fieldName, (double[]) simpleObject, stringBuffer);
|
||||
} else if (classOfObject == boolean[].class) {
|
||||
arrayPrinter.print(fieldName, (boolean[]) simpleObject, stringBuffer);
|
||||
} else if (classOfObject == char[].class) {
|
||||
arrayPrinter.print(fieldName, (char[]) simpleObject, stringBuffer);
|
||||
} else {
|
||||
*/ // ganz allgemein ein Array einer Klasse die von java.lang.Object erbt
|
||||
Object[] data = (Object[])simpleObject;
|
||||
evalArray(data, fieldName, stringBuffer);
|
||||
//}
|
||||
}
|
||||
catch (Exception )
|
||||
{
|
||||
stringBuffer.Append("failed to evaluate data for field ").Append(fieldName);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
96
interface/asm/dotnet/MesTools/ImsApi/TypePrinter.cs
Normal file
96
interface/asm/dotnet/MesTools/ImsApi/TypePrinter.cs
Normal file
@@ -0,0 +1,96 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace MesTools.ImsApi
|
||||
{
|
||||
public class TypePrinter
|
||||
{
|
||||
|
||||
public static bool INCLUDE_TYPE_INFO = false;
|
||||
|
||||
public void print(String typeName, StringBuilder stringBuffer)
|
||||
{
|
||||
if (typeName == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (INCLUDE_TYPE_INFO)
|
||||
{
|
||||
stringBuffer.Append("(").Append(typeName).Append(")");
|
||||
}
|
||||
}
|
||||
|
||||
public String getSimpleTypeName(Type class1)
|
||||
{
|
||||
/* if (class1 == Integer.class)
|
||||
{
|
||||
return "Integer";
|
||||
}
|
||||
else if (class1 == int.class)
|
||||
{
|
||||
return "int";
|
||||
}
|
||||
else if (class1 == Long.class)
|
||||
{
|
||||
return "Long";
|
||||
}
|
||||
else if (class1 == long.class)
|
||||
{
|
||||
return "long";
|
||||
}
|
||||
else if (class1 == double.class)
|
||||
{
|
||||
return "double";
|
||||
}
|
||||
else if (class1 == Double.class)
|
||||
{
|
||||
return "Double";
|
||||
}
|
||||
else if (class1 == float.class)
|
||||
{
|
||||
return "float";
|
||||
}
|
||||
else if (class1 == Float.class)
|
||||
{
|
||||
return "Float";
|
||||
}
|
||||
else if (class1 == Boolean.class)
|
||||
{
|
||||
return "Boolean";
|
||||
}
|
||||
else if (class1 == boolean.class)
|
||||
{
|
||||
return "boolean";
|
||||
}
|
||||
else if (class1 == char.class)
|
||||
{
|
||||
return "char";
|
||||
}
|
||||
else if (class1 == Character.class)
|
||||
{
|
||||
return "Character";
|
||||
}
|
||||
else if (class1 == short.class)
|
||||
{
|
||||
return "short";
|
||||
}
|
||||
else if (class1 == Short.class)
|
||||
{
|
||||
return "Short";
|
||||
}
|
||||
else if (class1 == byte.class)
|
||||
{
|
||||
return "byte";
|
||||
}
|
||||
else if (class1 == Byte.class)
|
||||
{
|
||||
return "Byte";
|
||||
}*/
|
||||
return class1.Name;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user