Язык Graphviz из JSP зрения динамического - PullRequest
0 голосов
/ 11 октября 2011

У меня есть несколько ролей, и у каждой роли есть пользователи.

Так что моя проблема в соответствии с нет.ролей и нет.из выбранных пользователей я должен создать график, используя graphviz.Язык Graphviz похож на (A -> B;) (B -> C;) (B -> D;) (C -> E;) (D -> E;) (E -> F)

Поэтому я должен создать язык графов в соответствии с тем, сколько у меня ролей и нет.из выбранных мной пользователей ...

Входящая строка похожа на = (1CS_3Admin_1BOD_2SH_1Others).И график для этого языка может быть таким: -


marapet Это то, что я делаю.

Мой язык похож на 1CS_3Admin_1BOD_2SH_1Другие1,3,1,2 - это количество выбранных пользователей, например, 1CS означает одного пользователя для роли CS.Теперь я разделил их с '_' в качестве разделителя.Теперь я получаю массив строк.Таким образом, настоящая проблема состоит в том, чтобы сделать язык из этого массива значений строк.Здесь «имя» - это строка, которую я получаю: -

Graphviz gv = new Graphviz();
          gv.addln(gv.start_graph());
          gv.addln("Start;");

          if(name.startsWith("_"));
            name=name.substring(1);

          String[] str=null;

          if(name.contains("_"))
              str = name.split("_");

          int sPreviousRepeat=0;
          String sPrevious="";
          int sCurrRepeat=0;
          String sCurr="";

          String finalInst="Start -> ";

        for(int i=0;i<str.length;i++) {
             sCurrRepeat=Integer.parseInt(String.valueOf(str[i].charAt(0)));
             sCurr=str[i].substring(1);
             if(i!=0){
                 sPreviousRepeat = Integer.parseInt(String.valueOf(str[i-1].charAt(0)));
                 sPrevious = str[i-1].substring(1);
             }

             if(sCurrRepeat==1){
                 if(i==0)
                     finalInst=finalInst+sCurr+";";
                 else
                     finalInst=finalInst + sPrevious+" -> "+sCurr+";";
             }
             else{
                 for(int j=0;j<sCurrRepeat;j++){

                    //cant figure out????? 

                 }

             }

         }

Ответы [ 2 ]

1 голос
/ 11 октября 2011

Вот как я могу решить эту проблему:

  1. Разобрать входную строку в структуру данных, представляющую n упорядоченных пар роль и количество пользователей
  2. Создание синтаксиса графика (graphviz dot) из структуры данных в # 1
  3. Преобразование синтаксиса graphviz в реальное изображение

You 'Вам нужно изучить следующее:

  • Синтаксис Graphviz
  • Создание простой программы для командной строки Java
  • Разбор и манипулирование строками в Java (разбивка и т. д.)
  • Вызов исполняемого файла из Java (dot.exe)
0 голосов
/ 12 октября 2011

Я думаю, что сделаю это.

          if(name.contains("_"))
          str = name.split("_");

      int sPreviousRepeat=0;
      String sPrevious="";
      int sCurrRepeat=0;
      String sCurr="";

      String finalInst="Start -> ";

    for(int i=0;i<str.length;i++) {
         sCurrRepeat=Integer.parseInt(String.valueOf(str[i].charAt(0)));
         sCurr=str[i].substring(1);
         if(i!=0){
             sPreviousRepeat = Integer.parseInt(String.valueOf(str[i-1].charAt(0)));
             sPrevious = str[i-1].substring(1);
         }

         if(sCurrRepeat==1){
             if(i==0)
                 finalInst=finalInst+sCurr+";";
             else if(sPreviousRepeat>1){
                 for(int j=0;j<sPreviousRepeat;j++)
                     finalInst=finalInst + sPrevious+(j+1)+" -> "+sCurr+";";
             }
             else
                 finalInst=finalInst + sPrevious+" -> "+sCurr+";";
         }
         else{
             for(int j=0;j<sCurrRepeat;j++){
                 finalInst=finalInst + sPrevious+" -> "+sCurr+(j+1)+";";                                     
             }

         }

     }
...