prasadtalasila/BITS-Darshini

View on GitHub
src/main/java/in/ac/bits/protocolanalyzer/protocol/ProtocolGraphParser.java

Summary

Maintainability
A
0 mins
Test Coverage
package in.ac.bits.protocolanalyzer.protocol;

import java.util.ArrayList;

import lombok.extern.log4j.Log4j;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

import in.ac.bits.protocolanalyzer.analyzer.Session;

@Component
@Scope(value = "prototype")
@Log4j
public class ProtocolGraphParser {

    @Autowired
    private ProtocolGraph protocolGraph;

    private ArrayList<String> graphLines = new ArrayList<String>();

    public void configureSession(Session session, String graphString) {

        String[] lines = graphString.split("\\r?\\n");
        removeBlankLines(lines);
        for (int i = 0; i < graphLines.size(); i++) {
            log.info("Line: " + i + " " + graphLines.get(i));
        }
        int linePtr = 0;
        /*
         * Configure start node
         */

        if (graphLines.get(linePtr).contains("start")) {
            int startPtr = linePtr;
            while (!graphLines.get(linePtr).contains("}")) {
                linePtr++;
            }
            protocolGraph.configureStartNode(session, graphLines, startPtr,
                    linePtr);
        }
        linePtr++;
        while (!graphLines.get(linePtr).contains("end")) {
            linePtr = collectNodes(session, linePtr);
            log.info("Line pointer now = " + linePtr);
        }
        protocolGraph.configureSessionCells(session);
    }

    private int collectNodes(Session session, int linePtr) {
        int startLine = linePtr;
        int lines = graphLines.size();
        linePtr++;
        while (linePtr < lines) {
            if (!graphLines.get(linePtr).contains("graph")) {
                linePtr++;
            } else {
                break;
            }
        }

        protocolGraph
                .configureNode(session, graphLines, startLine, linePtr - 1);
        return linePtr;
    }

    private void removeBlankLines(String[] lines) {
        for (int i = 0; i < lines.length; i++) {
            if (lines[i].trim().length() != 0) {
                graphLines.add(lines[i]);
            }
        }
    }
}