private void graph_creator_aux(IInputFormatInstance gif) { for (int i = 0; i < gif.ESIZE;) { if (gif.Target [i] != 0) // Será usada a forma canonica: i->j, onde i<j, i>0 j>0 { int s = gif.Source [i] < gif.Target [i] ? gif.Source [i] : gif.Target [i]; int t = gif.Target [i] > gif.Source [i] ? gif.Target [i] : gif.Source [i]; g.addVertex(s); g.addVertex(t); g.noSafeAdd(s, t); i++; } } IIteratorInstance <IKVPair <IInteger, IInputFormat> > output_gifs_instance = (IIteratorInstance <IKVPair <IInteger, IInputFormat> >)Output_gif.Instance; IKVPairInstance <IInteger, IInputFormat> item = (IKVPairInstance <IInteger, IInputFormat>)Output_gif.createItem(); ((IIntegerInstance)item.Key).Value = gif.PARTID; item.Value = gif; output_gifs_instance.put(item); // Emite-se gif novamente para que a funcão de particionamento do conector receba a instancia PartitionTABLE. } // Isso é necessário no caso de IKey ser do tipo IVertex.
private void graph_creator_aux(IInputFormatInstance gif) { for (int i = 0; i < gif.ESIZE;) { if (gif.Target [i] != 0) // Será usada a forma canonica: i->j, onde i<j, i>0 j>0 { int s = gif.Source [i] < gif.Target [i] ? gif.Source [i] : gif.Target [i]; int t = gif.Target [i] > gif.Source [i] ? gif.Target [i] : gif.Source [i]; g.addVertex(s); g.addVertex(t); g.noSafeAdd(s, t); //Usando noSafeAdd! Isso significa que erros no arquivo fonte não serão tratados. i++; //Ou seja, os dados serão inseridos da forma como chegam. Para tratamento, usa-se g.addEdge(s,t). } } IIteratorInstance <IKVPair <IInteger, IInputFormat> > output_gifs_instance = (IIteratorInstance <IKVPair <IInteger, IInputFormat> >)Output_gif.Instance; IKVPairInstance <IInteger, IInputFormat> item = (IKVPairInstance <IInteger, IInputFormat>)Output_gif.createItem(); ((IIntegerInstance)item.Key).Value = gif.PARTID; item.Value = gif; output_gifs_instance.put(item); // Emite-se gif novamente para que a funcão de particionamento do conector receba a instancia PartitionTABLE. } // Isso é necessário no caso de IKey ser do tipo IVertex.