CPD Results

The following document contains the results of PMD's CPD 6.13.0.

Duplications

File Line
org\sim0mq\demo\mm1\MM1FederationManager.java 415
org\sim0mq\demo\mm1\MM1FederationManager20.java 38
    {
        if (args.length < 4)
        {
            System.err.println(
                    "Use as FederationManager federationName federationManagerPortNumber federateStarterPortNumber local/sk-3");
            System.exit(-1);
        }
        String federationName = args[0];

        String fmsPort = args[1];
        int fmPort = 0;
        try
        {
            fmPort = Integer.parseInt(fmsPort);
        }
        catch (NumberFormatException nfe)
        {
            System.err.println("Use as FederationManager fedNname fmPort fsPort local/sk-3, where fmPort is a number");
            System.exit(-1);
        }
        if (fmPort == 0 || fmPort > 65535)
        {
            System.err.println("fmPort should be between 1 and 65535");
            System.exit(-1);
        }

        String fssPort = args[2];
        int fsPort = 0;
        try
        {
            fsPort = Integer.parseInt(fssPort);
        }
        catch (NumberFormatException nfe)
        {
            System.err.println("Use as FederationManager fedNname fmPort fsPort local/sk3, where fsPort is a number");
            System.exit(-1);
        }
        if (fsPort == 0 || fsPort > 65535)
        {
            System.err.println("fsPort should be between 1 and 65535");
            System.exit(-1);
        }

        String localSk3 = args[3];
        if (!localSk3.equals("local") && !localSk3.equals("sk-3"))
        {
            System.err.println("Use as FederationManager fedNname fmPort fsPort local/sk3, where last arg is local/sk-3");
            System.exit(-1);
        }

        new MM1FederationManager(federationName, fmPort, fsPort, localSk3);
File Line
org\sim0mq\demo\mm1\MM1FederationManager.java 291
org\sim0mq\demo\mm1\MM1FederationManager20.java 450
                    && ((Long) replyMessage[8]).longValue() == this.messageCount)
            {
                if (replyMessage[9].toString().equals("ended"))
                {
                    this.state = ModelState.SIMULATORENDED;
                }
                else
                {
                    // wait a second
                    try
                    {
                        Thread.sleep(1000);
                    }
                    catch (InterruptedException ie)
                    {
                        // ignore
                    }
                }
            }
            else
            {
                this.state = ModelState.ERROR;
                System.err.println("Simulation start error -- status = " + replyMessage[9]);
                System.err.println("Error message = " + replyMessage[10]);
            }
        }
    }

    /**
     * Request statistics with message FM.6.
     * @param federationName the name of the federation
     * @throws Sim0MQException on error
     * @throws SerializationException on serialization problem
     */
    private void requestStatistics(final String federationName) throws Sim0MQException, SerializationException
    {
        List<String> stats = new ArrayList<>();
        stats.add("dN.average");
        stats.add("qN.max");
        stats.add("uN.average");

        for (String statName : stats)
        {
            if (!this.state.isError())
            {
                byte[] fm6Message;
                fm6Message = SimulationMessage.encodeUTF8(federationName, "FM", "MM1.1", "FM.6", ++this.messageCount,
File Line
org\sim0mq\demo\mm1\MM1FederationManager.java 349
org\sim0mq\demo\mm1\MM1FederationManager20.java 509
                        System.out.println("Received statistic for " + statName + " = " + replyMessage[10].toString());
                    }
                    else
                    {
                        this.state = ModelState.ERROR;
                        System.err.println(
                                "Statistics Error: Stat variable expected = " + statName + ", got: " + replyMessage[8]);
                    }
                }
                else if (replyMessage[4].toString().equals("MC.4"))
                {
                    this.state = ModelState.ERROR;
                    System.err.println("Statistics Error: Stat variable = " + replyMessage[8]);
                    System.err.println("Error message = " + replyMessage[9]);
                }
                else
                {
                    this.state = ModelState.ERROR;
                    System.err.println("Statistics Error: Received unknown message as reply to FM6: " + replyMessage[4]);
                }
            }
        }
        if (!this.state.isError())
        {
            this.state = ModelState.STATISTICSGATHERED;
        }
    }

    /**
     * Send the FM.8 message to the FederateStarter to kill the MM1 model.
     * @param federationName the name of the federation
     * @throws Sim0MQException on error
     * @throws SerializationException on serialization problem
     */
    private void killFederate(final String federationName) throws Sim0MQException, SerializationException
    {
        byte[] fm8Message;
        fm8Message = SimulationMessage.encodeUTF8(federationName, "FM", "FS", "FM.8", ++this.messageCount, MessageStatus.NEW,
File Line
org\sim0mq\demo\mm1\MM1FederationManager.java 61
org\sim0mq\demo\mm1\MM1FederationManager20.java 211
        this.fsSocket.setIdentity(UUID.randomUUID().toString().getBytes());

        this.state = ModelState.NOT_STARTED;
        boolean ready = false;
        while (!ready)
        {
            System.out.println(this.state);

            switch (this.state)
            {
                case NOT_STARTED:
                    startModel(federationName, fsPort, localSk3);
                    break;

                case STARTED:
                    sendSimRunControl(federationName);
                    break;

                case RUNCONTROL:
                    setParameters(federationName);
                    break;

                case PARAMETERS:
                    sendSimStart(federationName);
                    break;

                case SIMULATORSTARTED:
                    waitForSimEnded(federationName);
                    break;

                case SIMULATORENDED:
                    requestStatistics(federationName);
                    break;

                case STATISTICSGATHERED:
                    killFederate(federationName);
                    ready = true;
                    break;

                case ERROR:
                    killFederate(federationName);
                    ready = true;
                    break;

                default:
                    break;
            }
        }

        this.modelSocket.close();
File Line
org\sim0mq\demo\mm1\MM1FederationManager.java 282
org\sim0mq\demo\mm1\MM1FederationManager20.java 441
                    SimulationMessage.encodeUTF8(federationName, "FM", "MM1.1", "FM.5", ++this.messageCount, MessageStatus.NEW);
            this.modelSocket.send(fm5Message);

            byte[] reply = this.modelSocket.recv(0);
            Object[] replyMessage = SimulationMessage.decode(reply);
            System.out.println("Received\n" + SimulationMessage.print(replyMessage));

            if (replyMessage[4].toString().equals("MC.1") && !replyMessage[9].toString().equals("error")
                    && !replyMessage[9].toString().equals("started")
                    && ((Long) replyMessage[8]).longValue() == this.messageCount)
File Line
org\sim0mq\demo\mm1\MM1FederationManager.java 337
org\sim0mq\demo\mm1\MM1FederationManager20.java 497
                fm6Message = SimulationMessage.encodeUTF8(federationName, "FM", "MM1.1", "FM.6", ++this.messageCount,
                        MessageStatus.NEW, statName);
                this.modelSocket.send(fm6Message);

                byte[] reply = this.modelSocket.recv(0);
                Object[] replyMessage = SimulationMessage.decode(reply);
                System.out.println("Received\n" + SimulationMessage.print(replyMessage));

                if (replyMessage[4].toString().equals("MC.3"))
                {
                    if (replyMessage[9].toString().equals(statName))
                    {
                        System.out.println("Received statistic for " + statName + " = " + replyMessage[10].toString());
File Line
org\sim0mq\demo\mm1\MM1FederationManager.java 175
org\sim0mq\demo\mm1\MM1FederationManager20.java 330
        fm2Message = SimulationMessage.encodeUTF8(federationName, "FM", "MM1.1", "FM.2", ++this.messageCount, MessageStatus.NEW,
                100.0, 0.0, 0.0, Double.POSITIVE_INFINITY, 1, 0);
        this.modelSocket.send(fm2Message);

        byte[] reply = this.modelSocket.recv(0);
        Object[] replyMessage = SimulationMessage.decode(reply);
        System.out.println("Received\n" + SimulationMessage.print(replyMessage));

        if (replyMessage[4].toString().equals("MC.2") && (boolean) replyMessage[9]
                && ((Long) replyMessage[8]).longValue() == this.messageCount)
File Line
org\sim0mq\demo\mm1\MM1FederationManager.java 141
org\sim0mq\demo\mm1\MM1FederationManager20.java 294
                    "e:/sim0mq/MM1/out.txt", "e:/sim0mq/MM1/err.txt", false, false, false);
            this.fsSocket.connect("tcp://127.0.0.1:" + fsPort);
        }
        this.fsSocket.send(fm1Message);

        byte[] reply = this.fsSocket.recv(0);
        Object[] replyMessage = SimulationMessage.decode(reply);
        System.out.println("Received\n" + SimulationMessage.print(replyMessage));

        if (replyMessage[4].toString().equals("FS.2") && replyMessage[9].toString().equals("started")
                && replyMessage[8].toString().equals("MM1.1"))