2011-10-11 46 views
0

我有一些角色,每個角色都有用戶。來自jsp視圖的Graphviz語言動態

所以我的問題是,根據沒有。角色和沒有。我選擇的用戶必須使用graphviz創建圖表。 Graphviz的語言是像(A - > B;)(B - >℃;)(B - > d;)(C - >電子;)(d - >電子;)(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????? 

       } 

      } 

     } 
+0

儘管由於本地圖像路徑而試圖+1,但您應該上傳這些圖像並使用其他stackoverflow用戶可以訪問的網址引用它們。特別是因爲這可能有助於我們理解你的問題到底是什麼。 – marapet

+0

其實我的聲譽得分是10我是不能上傳圖片。上傳圖像ü需要10+聲譽 – vikas27

+0

只需將它們直接上載到http://imgur.com/並使用鏈接 – marapet

回答

1

這裏就是我想打破的問題:

  1. 解析輸入字符串轉換成一個數據結構代表ň有序對角色和在#數從數據結構中的用戶
  2. 創建的曲線圖(graphviz的點)的語法的1
  3. 變換的graphviz的SY ntax成實際的圖像

你需要了解以下內容:

  • Graphviz的語法
  • 製作一個簡單的Java命令行程序
  • 解析和處理字符串在Java中(拆分等。)
  • 調用從Java可執行(dot.exe)
+0

我知道你指定的所有東西,但我無法創建一個將字符串轉換爲Graphviz語法的程序。 – vikas27

+0

如果您知道如何製作一個命令行java程序,並且您知道如何操作Java中的字符串,並且您知道graphviz語法,但是您不知道如何將它們放在一起,則必須更具體並告訴我們在哪裏你正遇到問題。從第一個問題開始:你有一個編譯(「hello world」)的java命令行程序嗎?你可以傳遞參數(輸入字符串)給它嗎?你能解析輸入字符串嗎?向我們展示你到目前爲止所擁有的。 – marapet

0

我想我做到了。

  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)+";";          
      } 

     } 

    } 
+0

我建議分離創建graphviz代碼的輸入分析。 – marapet