--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/cenrep/cenrep_keys_syntax_checker.pl Mon Apr 19 14:01:53 2010 +0300
@@ -0,0 +1,286 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+#####################################
+# Run with -h to get help
+######################################
+use strict;
+use lib ".";
+use Win32::OLE qw(in with);
+use Win32::OLE::Const 'Microsoft Excel';
+use Cwd;
+use Getopt::Long;
+use File::Basename;
+use excel_support; # Own perl module that contains the reading of memory-sheets
+use cenrep_keys; # Own perl module that contains the reading of memory-sheets
+
+###########################################################################
+# Function that gets a dir as parameter and reads the list of excel files from the
+# given directory.
+#
+# Params: a directory name
+#
+# Return value: a reference to a list of filenames.
+###########################################################################
+sub getExcelFilesFromDir
+{
+ my $dir = shift;
+
+ # the given dir should be relative to the dir, where the script is executed.
+ if($dir !~ /^[\\\/]/ && $dir !~ /^[A-Za-z]:/)
+ {
+ $dir = cwd . "\\$dir";
+ }
+ my @files;
+ @files = <$dir\\*.xls >;
+
+ return \@files;
+}
+
+
+###################################################
+# Function that reads the file names from the given file.
+# THe information is read from Column A and 1st empty row indicates
+# end of input.
+#
+# Params: fileNameRead, refToExcelApp
+###################################################
+sub getExcelFilesFromFile
+{
+ my $file = shift;
+ my $refToExcel = shift;
+
+ my @fileList;
+ # ----------------------------------------------------------------
+ # Open the file and get the worksheet
+ # ----------------------------------------------------------------
+ my $refToWb = openWorkbook( $file,$refToExcel);
+ my $refToWorkSheet = getWorkSheet( $refToWb,"Info");
+
+ #------------------------------------------------------------
+ # Read the needed rows from the row, until empty row found
+ #------------------------------------------------------------
+ my $row;
+ for( $row = 1;; $row++ )
+ {
+ my $fileName = $$refToWorkSheet->Cells( $row, 1 )->{ 'Value' };
+
+ if(!defined($fileName) || $fileName =~ /^\s*$/)
+ {
+ last;
+ }
+
+ push(@fileList,$fileName);
+ }
+
+ return \@fileList;
+}
+
+###########################################################################
+# Main function,
+###########################################################################
+sub main
+{
+ my $refToExcelFiles = shift;
+ my $refToExcel = shift;
+ my $ignoreWarnings = shift;
+
+ my %reshHash;
+ my $refToWorkSheet;
+
+ my $errorsFound = 0;
+
+ # Loop through each found excel sheet. This will open one file after each other
+ # and parse information into the hashes defined above.
+ foreach my $file ( @{$refToExcelFiles} )
+ {
+ $file =~ /[\\\/]([a-zA-Z0-9\-_\.\s\&]+\.xls)/;
+ print "\n--------------------------------------------\nReading: $1\n";
+
+ my ($name,$path,$suffix) = fileparse($file,qr{\.xls});
+ checkCentrepKeySheetName("$name$suffix");
+ # ----------------------------------------------------------------
+ # Open the file
+ # ----------------------------------------------------------------
+ my $refToWb = openWorkbook( $file,$refToExcel);
+
+ # ----------------------------------------------------------------
+ # Read the information from the worksheets
+ # ----------------------------------------------------------------
+ for( my $i = 0; $i < $$refToWb->Worksheets->Count; $i++)
+ {
+ my $workSheet = $$refToWb->WorkSheets($i + 1);
+ $refToWorkSheet = getWorkSheet( $refToWb,$workSheet->Name);
+ if(checkCentrepKeyInfo( $refToWorkSheet,$ignoreWarnings))
+ {
+ $errorsFound = 1;
+ }
+ }
+ # "delete" the workbooks, this closes the excel application
+ $$refToWb->Close(0);
+ undef $$refToWb;
+ undef $refToWb;
+ }
+
+ return $errorsFound;
+}
+
+###########################################################################
+# Shows help.
+#
+# Params: -
+#
+# Return: -
+#
+###########################################################################
+sub usage
+{
+ print "\n";
+ print "\n";
+ print "This script reads all the cenrep keys sheets from the given\n";
+ print "directory and makes a syntax check for them.\n";
+ print "\n";
+ print "Usage:\n";
+ print " $0 [-h|-help] (-d <cenrepSheetDir> | -f <excelSheetName>) \n";
+ print "\n";
+ print "Options:\n";
+ print " -h : Show this help\n";
+ print " -help : Show this help\n";
+ print " -d <sheetDir> : relative path from the dir where this script is run\n";
+ print " to the directory where the cenrep-sheets exist.\n";
+ print " -e <excelSheetName> : name of the sheet, that specifies the read excel sheet names in the column A.\n";
+ print " No empty rows allowed, reading is stopped, when the 1st empty row is found.\n";
+ print " The sheet name defining the files inside Workbook has to be \"Info\".\n";
+ print " Also no header expected for the column (reading starts from row 1)\n";
+ print " -w : Ignores warning messages\n";
+ print " -h : Show this help\n";
+ print "\n";
+ print "You have specify either -d or -e, but not both at the same time.\n";
+ print "\n";
+ print "Example usage:\n";
+ print " perl $0 -d cenrep\n";
+ print "\n";
+ print "Known issues:\n";
+ print " - The script will give an error, if directory names in the path contain spaces\n";
+ print "\n";
+ print "\n";
+
+ exit(0);
+}
+###########################################################################
+# Parses the command line parameters from ARGV
+#
+# Params: -
+#
+# Return: -
+#
+###########################################################################
+sub parseCmdLine
+{
+ my $dir = "";
+ my $file = "";
+ my $sheetFile = "";
+ my $ignoreWarnings = 0;
+
+ if( ! GetOptions('d:s' => \$dir,
+ 's:s' => \$sheetFile,
+ 'f:s' => \$file,
+ 'h' => \&usage,
+ 'w' => \$ignoreWarnings,
+ 'help' => \&usage,
+ '<>' => \&usage))
+ {
+ exit(1);
+ }
+
+ if($dir ne "" and $file ne "" )
+ {
+ print "\nError: The file and directory arguments can't be specified at the same time.\n";
+ exit(1);
+ }
+ elsif($dir eq "" and $file eq "" )
+ {
+ usage;
+ print "\n\nError: You have to specify either the -d or -f argument.\n";
+ exit(1);
+ }
+
+
+ return ($dir,$file,$sheetFile,$ignoreWarnings);
+}
+
+
+###################################################
+# Actual program
+###################################################
+my $sheetDir;
+my $file;
+my $sheetFile;
+my $ignoreWarnings;
+
+($sheetDir,$file,$sheetFile,$ignoreWarnings) = parseCmdLine;
+
+# ----------------------------------------------------------------
+# Get excel application
+# ----------------------------------------------------------------
+my $refToExcel = getExcelApp();
+
+#-----------------------------------------------------------------
+# There are 2 options how the user can give the if-sheet names handled:
+# 1) He gives the directory where all files are located
+# 2) He gives an excel sheet, which contains all the files in column A.
+#-----------------------------------------------------------------
+my $refToExcelFilesList;
+
+if($sheetFile !~ /^\s*$/)
+{
+ my @list;
+ push(@list,$sheetFile);
+ $refToExcelFilesList = \@list;
+}
+if($sheetDir !~ /^\s*$/)
+{
+ # Read the filenames from the directory given
+ $refToExcelFilesList = getExcelFilesFromDir $sheetDir;
+}
+else
+{
+ # Read the filenames from the excel file given
+ $refToExcelFilesList = getExcelFilesFromFile $file, $refToExcel;
+}
+
+#-----------------------------------------------------------------
+# The main function that parses the information
+#-----------------------------------------------------------------
+
+my $errors = main $refToExcelFilesList,$refToExcel,$ignoreWarnings;
+
+#-----------------------------------------------------------------
+# quit excel and "delete" the instances.
+#-----------------------------------------------------------------
+quitExcelApp($refToExcel);
+
+exit $errors;
+
+
+
+
+
+
+
+
+
+
+