Ignore:
Timestamp:
Jun 7, 2012, 10:54:31 PM (12 years ago)
Author:
djay
Message:

Add support for multiple inputs values for the same identifier.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/zoo-project/zoo-kernel/service_internal_java.c

    r355 r360  
    22 * Author : Gérald FENOY
    33 *
    4  * Copyright (c) 2009-2011 GeoLabs SARL
     4 * Copyright (c) 2009-2012 GeoLabs SARL
    55 *
    66 * Permission is hereby granted, free of charge, to any person obtaining a copy
     
    201201    maps* tmp=t;
    202202    while(tmp!=NULL){
     203      map* tmap=getMapType(tmp->content);
    203204      map* tmp1=tmp->content;
    204205      scObject1 = (*env)->NewObject(env, scHashMap_class, scHashMap_constructor);
    205206      map* sizeV=getMap(tmp1,"size");
     207      map* isArray=getMap(tmp1,"isArray");
     208      map* alen=getMap(tmp1,"length");
    206209      while(tmp1!=NULL){
    207         if(sizeV!=NULL && strcmp(tmp1->name,"value")==0){
    208           jbyteArray tmpData=(*env)->NewByteArray(env,atoi(sizeV->value));
    209           (*env)->SetByteArrayRegion(env,tmpData,0,atoi(sizeV->value),tmp1->value);
    210           (*env)->CallObjectMethod(env,scObject1, put_mid, (*env)->NewStringUTF(env,tmp1->name), tmpData);
    211         }else
     210        if(strcmp(tmp1->name,"value")==0){
     211          if(isArray==NULL){
     212            if(sizeV!=NULL && strcmp(tmp1->name,"value")==0){
     213              jbyteArray tmpData=(*env)->NewByteArray(env,atoi(sizeV->value));
     214              (*env)->SetByteArrayRegion(env,tmpData,0,atoi(sizeV->value),tmp1->value);
     215              (*env)->CallObjectMethod(env,scObject1, put_mid, (*env)->NewStringUTF(env,tmp1->name), tmpData);
     216            }else
     217              (*env)->CallObjectMethod(env,scObject1, put_mid, (*env)->NewStringUTF(env,tmp1->name), (*env)->NewStringUTF(env,tmp1->value));
     218          }
     219          else{
     220            int alen1=atoi(alen->value);
     221            fprintf(stderr,"LENGTH %d \n",alen1);
     222           
     223            jclass scArrayListClass,scArrayList_class;
     224            jmethodID scArrayList_constructor;
     225            jobject scObject2,scObject3,scObject4;
     226            scArrayListClass = (*env)->FindClass(env, "java/util/ArrayList");
     227            scArrayList_class = (*env)->NewGlobalRef(env, scArrayListClass);
     228            scArrayList_constructor = (*env)->GetMethodID(env, scArrayList_class, "<init>", "()V");
     229            jmethodID add_mid = 0;
     230            scObject2 = (*env)->NewObject(env, scArrayList_class, scArrayList_constructor);
     231            scObject3 = (*env)->NewObject(env, scArrayList_class, scArrayList_constructor);
     232            scObject4 = (*env)->NewObject(env, scArrayList_class, scArrayList_constructor);
     233
     234            add_mid = (*env)->GetMethodID(env,scArrayListClass,
     235                                          "add","(Ljava/lang/Object;)Z");
     236           
     237            int i;
     238           
     239            for(i=0;i<alen1;i++){
     240              map* vMap=getMapArray(tmp->content,"value",i);       
     241              map* sMap=getMapArray(tmp->content,"size",i);
     242              map* mMap=getMapArray(tmp->content,tmap->value,i);
     243             
     244              if(sMap!=NULL && vMap!=NULL && strncmp(vMap->name,"value",5)==0){
     245                jbyteArray tmpData=(*env)->NewByteArray(env,atoi(sMap->value));
     246                (*env)->SetByteArrayRegion(env,tmpData,0,atoi(sMap->value),vMap->value);
     247                (*env)->CallObjectMethod(env,scObject2, add_mid, tmpData);
     248              }else{
     249                jobject tmpData=(*env)->NewStringUTF(env,vMap->value);
     250                (*env)->CallObjectMethod(env,scObject2, add_mid, tmpData);
     251              }
     252             
     253            }
     254           
     255            (*env)->CallObjectMethod(env,scObject1, put_mid, (*env)->NewStringUTF(env,tmp1->name), scObject2);
     256           
     257          }
     258        }
     259        else
    212260          (*env)->CallObjectMethod(env,scObject1, put_mid, (*env)->NewStringUTF(env,tmp1->name), (*env)->NewStringUTF(env,tmp1->value));
    213261        tmp1=tmp1->next;
Note: See TracChangeset for help on using the changeset viewer.

Search

Context Navigation

ZOO Sponsors

http://www.zoo-project.org/trac/chrome/site/img/geolabs-logo.pnghttp://www.zoo-project.org/trac/chrome/site/img/neogeo-logo.png http://www.zoo-project.org/trac/chrome/site/img/apptech-logo.png http://www.zoo-project.org/trac/chrome/site/img/3liz-logo.png http://www.zoo-project.org/trac/chrome/site/img/gateway-logo.png

Become a sponsor !

Knowledge partners

http://www.zoo-project.org/trac/chrome/site/img/ocu-logo.png http://www.zoo-project.org/trac/chrome/site/img/gucas-logo.png http://www.zoo-project.org/trac/chrome/site/img/polimi-logo.png http://www.zoo-project.org/trac/chrome/site/img/fem-logo.png http://www.zoo-project.org/trac/chrome/site/img/supsi-logo.png http://www.zoo-project.org/trac/chrome/site/img/cumtb-logo.png

Become a knowledge partner

Related links

http://zoo-project.org/img/ogclogo.png http://zoo-project.org/img/osgeologo.png