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 }