diff options
author | Jörg Frings-Fürst <jff@merkur> | 2014-07-06 15:20:38 +0200 |
---|---|---|
committer | Jörg Frings-Fürst <jff@merkur> | 2014-07-06 15:20:38 +0200 |
commit | 126bb8cb6b93240bb4d3a2b816b74c286c3d422b (patch) | |
tree | e66e1dfe77d53a52539489765c88d23e4423ae27 /lib/gcstar/GCExport/GCExportSQL.pm |
Imported Upstream version 1.7.0upstream/1.7.0
Diffstat (limited to 'lib/gcstar/GCExport/GCExportSQL.pm')
-rw-r--r-- | lib/gcstar/GCExport/GCExportSQL.pm | 172 |
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 |