Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: org/vrspace/server/command/Administrator/setAll.java


1   package org.vrspace.server.command.Administrator;
2   import org.vrspace.server.*;
3   import org.vrspace.util.*;
4   import java.lang.reflect.*;
5   
6   /**
7   Syntax: setAll className destField srcField<br>
8   For all members of <b>className</b>, sets field <b>destField</b> to value of <b>srcField</b>.<br>
9   If fields are not of the same class, destField must have constructor which takes class of srcField as a parameter.<br>
10  Intended for migration.
11  */
12  public class setAll implements Command {
13    public void exec( Request r ) throws Exception {
14      Dispatcher d = r.getClient().getDispatcher();
15      String className = r.getArguments()[0];
16      String destFieldName = r.getArguments()[1];
17      String srcFieldName = r.getArguments()[2];
18      Object[] objs = d.getDB( r.getClient() ).getAll( className );
19      Field srcField = objs[0].getClass().getField(srcFieldName);
20      Field destField = objs[0].getClass().getField(destFieldName);
21      if ( srcField.getType().equals( destField.getType() ) ) {
22        for ( int i = 0; i < objs.length; i++ ) {
23          destField.set( objs[i], srcField.get( objs[i] ));
24        }
25      } else {
26        // get constructor
27        Class[] argsTypes = { srcField.getType() };
28        Constructor constructor = destField.getType().getConstructor( argsTypes );
29        for ( int i = 0; i < objs.length; i++ ) {
30          destField.set( objs[i], constructor.newInstance( new Object[] { srcField.get(objs[i]) } ));
31        }
32      }
33    }
34  }