summaryrefslogtreecommitdiff
path: root/lib/gcstar/GCExport/GCExportSQL.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gcstar/GCExport/GCExportSQL.pm')
-rw-r--r--lib/gcstar/GCExport/GCExportSQL.pm172
1 files changed, 172 insertions, 0 deletions
diff --git a/lib/gcstar/GCExport/GCExportSQL.pm b/lib/gcstar/GCExport/GCExportSQL.pm
new file mode 100644
index 0000000..5164d3b
--- /dev/null
+++ b/lib/gcstar/GCExport/GCExportSQL.pm
@@ -0,0 +1,172 @@
+package GCExport::GCExportSQL;
+
+###################################################
+#
+# Copyright 2005-2010 Christian Jodar
+#
+# This file is part of GCstar.
+#
+# GCstar is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# GCstar is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCstar; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+#
+###################################################
+
+use strict;
+
+use GCExport::GCExportBase;
+
+{
+ package GCExport::GCExporterSQL;
+ use base qw(GCExport::GCExportBaseClass);
+
+ sub new
+ {
+ my $proto = shift;
+ my $class = ref($proto) || $proto;
+ my $self = $class->SUPER::new();
+
+
+ bless ($self, $class);
+ return $self;
+ }
+
+ sub getSuffix
+ {
+ my $self = shift;
+
+ return "";
+ }
+
+ sub getOptions
+ {
+ my $self = shift;
+
+ return [
+ {
+ name => 'table',
+ type => 'short text',
+ label => 'TableName',
+ default => 'items'
+ },
+ {
+ name => 'withDrop',
+ type => 'yesno',
+ label => 'WithDrop',
+ default => '1'
+ },
+ {
+ name => 'withCreate',
+ type => 'yesno',
+ label => 'WithCreate',
+ default => '1'
+ },
+ ]
+ }
+
+ sub wantsFieldsSelection
+ {
+ return 1;
+ }
+
+ sub wantsImagesSelection
+ {
+ return 1;
+ }
+
+ sub getName
+ {
+ my $self = shift;
+
+ return "SQL";
+ }
+
+ sub preProcess
+ {
+ my $self = shift;
+ return 1;
+ }
+
+ sub getHeader
+ {
+ my ($self, $number) = @_;
+
+ my $result = '';
+
+ if ($self->{options}->{withDrop})
+ {
+ $result .= 'DROP TABLE '.$self->{options}->{table}.";\n";
+ }
+ if ($self->{options}->{withCreate})
+ {
+ $result .= 'CREATE TABLE '.$self->{options}->{table}.' (';
+
+ foreach (@{$self->{options}->{fields}})
+ {
+ my $type = $self->{model}->{fieldsInfo}->{$_}->{type};
+ my $format = 'TEXT';
+ $format = 'NUMBER' if ($type eq 'number') || ($type eq 'yesno');
+ $result .= "$_ $format, ";
+ }
+ $result =~ s/, $//;
+ $result .= ");\n";
+ }
+
+ return $result;
+ }
+
+ sub getFooter
+ {
+ my $self = shift;
+
+ my $result = "COMMIT;\n";
+ return $result;
+ }
+
+ sub getItem
+ {
+ my ($self, $item, $number) = @_;
+ my $result;
+
+ $result = 'INSERT INTO '.$self->{options}->{table}.' (';
+ my $values = '';
+ foreach (@{$self->{options}->{fields}})
+ {
+ $result .= "$_, ";
+ my $value = $self->transformValue($item->{$_}, $_);
+ $value =~ s/'/''/g;
+ #'
+ $values .= "'".$value."', ";
+ }
+ $result =~ s/, $//;
+ $values =~ s/, $//;
+
+ $result .= ") VALUES ($values);\n";
+ return $result;
+ }
+
+ sub postProcess
+ {
+ my ($self, $value, $body) = @_;
+
+ }
+
+ sub getEndInfo
+ {
+ my $self = shift;
+ my $message = $self->getLang->{InfoFile}.$self->{fileName};
+ return $message;
+ }
+}
+
+1; \ No newline at end of file