diff -r 608f67c22514 -r 896e9dbc5f19 internetradio2.0/cenrep/cenrep_keys_syntax_checker.pl --- a/internetradio2.0/cenrep/cenrep_keys_syntax_checker.pl Tue Jul 06 14:07:20 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,286 +0,0 @@ -# -# 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 | -f ) \n"; - print "\n"; - print "Options:\n"; - print " -h : Show this help\n"; - print " -help : Show this help\n"; - print " -d : relative path from the dir where this script is run\n"; - print " to the directory where the cenrep-sheets exist.\n"; - print " -e : 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; - - - - - - - - - - -