/******************************************************************************* * Copyright (c) 2010 György Orosz. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * György Orosz - initial API and implementation ******************************************************************************/ package org.erlide.wrangler.refactoring.backend.internal; import org.erlide.wrangler.refactoring.exception.WranglerException; import com.ericsson.otp.erlang.OtpErlangLong; import com.ericsson.otp.erlang.OtpErlangObject; import com.ericsson.otp.erlang.OtpErlangRangeException; import com.ericsson.otp.erlang.OtpErlangString; import com.ericsson.otp.erlang.OtpErlangTuple; /** * RPC message parser class for * State data to record refactorings * * @author Gyorgy Orosz * @version %I%, %G% */ public class StateDataToRecordRpcMessage extends AbstractRefactoringRpcMessage { protected int fieldCount; protected OtpErlangObject stateFuns; @Override protected void parseRefactoringMessage(final OtpErlangTuple resultTuple) throws WranglerException { final OtpErlangObject wranglerResult = resultTuple.elementAt(1); if (!resultTuple.elementAt(0).toString().equals("ok")) { final OtpErlangString msg = (OtpErlangString) wranglerResult; setUnsuccessful(msg.stringValue()); } else { if (wranglerResult.toString().equals("non_tuple")) { fieldCount = 1; } else { try { fieldCount = ((OtpErlangLong) ((OtpErlangTuple) wranglerResult) .elementAt(1)).intValue(); } catch (final OtpErlangRangeException e) { throw new WranglerException(e.getMessage()); } } stateFuns = resultTuple.elementAt(2); setSuccessful(); } } /** * Returns the number of fields, which the refactoring will need * * @return number of fields */ public int getFieldCount() { return fieldCount; } /** * Returns StateFun Erlang object * * @return statefun */ public OtpErlangObject getStateFuns() { return stateFuns; } }