summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xgen-gdf.pl42
1 files changed, 30 insertions, 12 deletions
diff --git a/gen-gdf.pl b/gen-gdf.pl
index e8537af..bd04c9a 100755
--- a/gen-gdf.pl
+++ b/gen-gdf.pl
@@ -40,15 +40,25 @@ print "creating nodes ... ";
$struct_graph->{ gexf }->{ graph }->{ nodes } = {};
my $packages;
-
-$packages = $dbmap->resultset( 'packages' )->search(
- { -and => [
- author => { '!=', 'null' },
- released => { '>', '1970-01-01' }
- ]
- }
-);
-
+my $id_nodes;
+if ( $type && $type eq 'author' ) {
+ my $author_list = LoadFile( $list );
+ $packages = $dbmap->resultset( 'packages' )->search(
+ { -and => [
+ author => { 'in', $author_list},
+ released => { '>', '1970-01-01' }
+ ]
+ }
+ );
+} else {
+ $packages = $dbmap->resultset( 'packages' )->search(
+ { -and => [
+ author => { '!=', 'null' },
+ released => { '>', '1970-01-01' }
+ ]
+ }
+ );
+}
while ( my $package = $packages->next ) {
my ( $year, $month, $day )
@@ -60,21 +70,29 @@ while ( my $package = $packages->next ) {
version => $package->version,
datefrom => join( '/', $year, $month, $day ),
};
+ $id_nodes->{$package->id}++;
}
say "done";
print "creating edges ... ";
my $id = 0;
-$struct_graph->{ gexf }->{ graph }->{ edges } = {};
-my $edges = $dbmap->resultset( 'edges' )->search;
+my $edges;
+if ( $type && $type eq 'author' ) {
+ $edges = $dbmap->resultset( 'edges' )
+ ->search( { dist_from => { 'in' => [ keys %$id_nodes ] }, } );
+} else {
+ $edges = $dbmap->resultset( 'edges' )->search;
+}
+
while ( my $edge = $edges->next ) {
+ next unless exists $id_nodes->{ $edge->dist_from };
+ next unless exists $id_nodes->{ $edge->dist_to };
push @{ $struct_graph->{ gexf }->{ graph }->{ edges }->{ edge } }, {
cardinal => 1,
source => $edge->dist_from,
target => $edge->dist_to,
type => 'dir',
id => ++$id,
- #attvalue => [ { id => 3, value => 'prereq' } ],
};
}
say "done";