AD2 session 2026-03-27/28/29: Test datasheet pipeline rebuild
- Built exact-match TXT formatter from QuickBASIC source (SCM5B, 8B, DSCA, DSCT, SCM7B) - Spec parser for 10 binary DAT files (1470+ models) - Work order report importer (33K WOs, 63K test lines) - On-demand PDF generation, styled HTML view - Archived 500K pre-2026 For_Web files into year subfolders - Created domain service account (INTRANET\svc_testdatadb) - Generated 73/73 Quatronix customer datasheets - Added STAGE + Reports auto-import to sync script Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
BIN
Test Datasheets/DF-Test-Detail.PDF
Normal file
BIN
Test Datasheets/DF-Test-Detail.PDF
Normal file
Binary file not shown.
80
Test Datasheets/DFWDS/DFWDS_NAMES.txt
Normal file
80
Test Datasheets/DFWDS/DFWDS_NAMES.txt
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
DATASHEET FOLDER NAME,X:\Test_Datasheets
|
||||||
|
INVALID FILE MOVE FOLDER,X:\Bad_Datasheets
|
||||||
|
LOG FILE NAME,DFWDS
|
||||||
|
LOG FILE FOLDER,X:\Datasheets_Log
|
||||||
|
WEB FOLDER,X:\For_Web
|
||||||
|
OPERATION,WEBMOVE
|
||||||
|
|
||||||
|
Last updated: 2015-06-08
|
||||||
|
|
||||||
|
The first six lines of this file are folder and file names required by
|
||||||
|
the Dataforth Website Datasheet program (DFWDS.exe). Each line consists
|
||||||
|
of the parameter name (in all CAPS), followed by a comma, followed by
|
||||||
|
the file or folder name (not in quotes) or operation. A space is
|
||||||
|
allowed after the comma separator.
|
||||||
|
|
||||||
|
The six lines parameter lines must contain only the allowed parameters
|
||||||
|
and data, in this specified format, for the program to operate properly.
|
||||||
|
Any lines below these six lines are not read by the program, and can
|
||||||
|
consist of comments or instructions (such as these).
|
||||||
|
|
||||||
|
The location and name of this file (usually C:\DFWDS\DFWDS_NAMES.TXT) is
|
||||||
|
hardcoded in the program.
|
||||||
|
|
||||||
|
Descriptions of the six required lines (along with the required parameter
|
||||||
|
names) are shown below:
|
||||||
|
|
||||||
|
First line:
|
||||||
|
-----------
|
||||||
|
DATASHEET FOLDER NAME: This is the location of the folder containing the
|
||||||
|
datasheet files that will eventually be copied to the Dataforth website.
|
||||||
|
|
||||||
|
Second line:
|
||||||
|
------------
|
||||||
|
INVALID FILE MOVE FOLDER: This is the location of the folder to which
|
||||||
|
invalid files in the datasheet folder will be moved.
|
||||||
|
|
||||||
|
Third line:
|
||||||
|
-----------
|
||||||
|
LOG FILE NAME: This is the name of the file that logs the operation of the
|
||||||
|
Dataforth Website Datasheet program (DFWDS.exe), including invalid file
|
||||||
|
moves and datasheet file renaming. NOTE: This is the file name (only),
|
||||||
|
and does NOT include the ".log" extension.
|
||||||
|
|
||||||
|
Fourth line:
|
||||||
|
------------
|
||||||
|
LOG FILE FOLDER: This is the location of the folder containing the log
|
||||||
|
file for the DFWDS.exe program.
|
||||||
|
|
||||||
|
Fifth line:
|
||||||
|
WEB FOLDER: This is the location of the folder to which the valid
|
||||||
|
datasheet files (including renamed files) are moved if the "OPERATION"
|
||||||
|
parameter (see below) is "WEBMOVE".
|
||||||
|
|
||||||
|
Sixth line:
|
||||||
|
-----------
|
||||||
|
OPERATION: This parameter controls the operation of the program, and
|
||||||
|
can only be one of the values described below:
|
||||||
|
-------------------------------------
|
||||||
|
COUNT causes the program to only count the invalid files
|
||||||
|
and files that should be renamed.
|
||||||
|
|
||||||
|
LISTALL causes the program to list all of the files found in the
|
||||||
|
datasheet folder.
|
||||||
|
|
||||||
|
LISTBAD causes the program to list all of the invalid ("bad") files
|
||||||
|
found in the datasheet folder.
|
||||||
|
|
||||||
|
LISTRENAME causes the program to list all of the datasheet files in
|
||||||
|
the datasheet folder that have DOS-encoded names that need to be
|
||||||
|
renamed to match the module serial number contained in the file.
|
||||||
|
|
||||||
|
INPLACE renames the appropriate files in their current directory
|
||||||
|
(specified by the "DATASHEET FOLDER NAME" parameter - see above), but
|
||||||
|
moves the invalid files to the directory specified by the
|
||||||
|
"INVALID FILE MOVE FOLDER" parameter (see above).
|
||||||
|
|
||||||
|
WEBMOVE moves the invalid files to the "INVALID FILE MOVE FOLDER"
|
||||||
|
directory, but also moves the valid datasheet files (including those
|
||||||
|
that have been renamed) to the folder specified by the "WEB FOLDER"
|
||||||
|
parameter (see above).
|
||||||
1388
Test Datasheets/QB-Source/DB8BMAIN.BAS
Normal file
1388
Test Datasheets/QB-Source/DB8BMAIN.BAS
Normal file
File diff suppressed because it is too large
Load Diff
2380
Test Datasheets/QB-Source/KDSCOUT1.BAS
Normal file
2380
Test Datasheets/QB-Source/KDSCOUT1.BAS
Normal file
File diff suppressed because it is too large
Load Diff
3168
Test Datasheets/QB-Source/NLIBATED-DSCA.BAS
Normal file
3168
Test Datasheets/QB-Source/NLIBATED-DSCA.BAS
Normal file
File diff suppressed because it is too large
Load Diff
3222
Test Datasheets/QB-Source/NLIBATED-DSCT.BAS
Normal file
3222
Test Datasheets/QB-Source/NLIBATED-DSCT.BAS
Normal file
File diff suppressed because it is too large
Load Diff
3223
Test Datasheets/QB-Source/NLIBATED.BAS
Normal file
3223
Test Datasheets/QB-Source/NLIBATED.BAS
Normal file
File diff suppressed because it is too large
Load Diff
3506
Test Datasheets/QB-Source/TEST5B1E.BAS
Normal file
3506
Test Datasheets/QB-Source/TEST5B1E.BAS
Normal file
File diff suppressed because it is too large
Load Diff
3367
Test Datasheets/QB-Source/TEST5B2E.BAS
Normal file
3367
Test Datasheets/QB-Source/TEST5B2E.BAS
Normal file
File diff suppressed because it is too large
Load Diff
1731
Test Datasheets/QB-Source/TEST7B1C.BAS
Normal file
1731
Test Datasheets/QB-Source/TEST7B1C.BAS
Normal file
File diff suppressed because it is too large
Load Diff
BIN
Test Datasheets/QB-Source/TESTPW17.BAS
Normal file
BIN
Test Datasheets/QB-Source/TESTPW17.BAS
Normal file
Binary file not shown.
3473
Test Datasheets/QB-Source/TST5SCT1.BAS
Normal file
3473
Test Datasheets/QB-Source/TST5SCT1.BAS
Normal file
File diff suppressed because it is too large
Load Diff
2052
Test Datasheets/QB-Source/TST5SCT2.BAS
Normal file
2052
Test Datasheets/QB-Source/TST5SCT2.BAS
Normal file
File diff suppressed because it is too large
Load Diff
194
Test Datasheets/README.md
Normal file
194
Test Datasheets/README.md
Normal file
@@ -0,0 +1,194 @@
|
|||||||
|
# Claude Instance Context: Test Datasheets Investigation (AD1)
|
||||||
|
|
||||||
|
**Purpose:** You are a Claude Code instance running on AD1 (192.168.0.27) at Dataforth's facility. Your job is to investigate the TestDataSheetUploader tool and the test datasheet workflow -- where files come from, where they go, and how this integrates with the DOS test machines.
|
||||||
|
|
||||||
|
**This is a temporary investigation instance.** Once findings are documented and synced to Gitea, this instance will be removed.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Your Mission
|
||||||
|
|
||||||
|
1. **Find where test datasheets are generated** -- which machine(s), which software, what path
|
||||||
|
2. **Find where they end up** -- the server-side path is `C:\inetpub\wwwroot\dataforth.com\WebShare\ProcessCheckOutTestFolder\` on whatever runs www.dataforth.com
|
||||||
|
3. **Determine if this uploader is still in active use** or if the workflow changed
|
||||||
|
4. **Document the full datasheet pipeline** -- from DOS test machine output through to the website
|
||||||
|
5. **Sync your findings back to Gitea** so the coordinator instance can see them
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Gitea Sync (How to Push Findings)
|
||||||
|
|
||||||
|
The ClaudeTools repo is hosted on Gitea. Clone and push your findings here:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Clone the repo
|
||||||
|
git clone https://mike%40azcomputerguru.com:Gptf%2A77ttb123%21%40%23-git@git.azcomputerguru.com/azcomputerguru/claudetools.git
|
||||||
|
cd claudetools
|
||||||
|
|
||||||
|
# Your working area
|
||||||
|
# clients/dataforth/dos-test-machines/Test Datasheets/
|
||||||
|
|
||||||
|
# Commit and push findings
|
||||||
|
git add -A
|
||||||
|
git commit -m "AD1 investigation: test datasheet pipeline findings"
|
||||||
|
git push origin main
|
||||||
|
```
|
||||||
|
|
||||||
|
**Gitea Credentials (plaintext, temporary use only):**
|
||||||
|
- URL: https://git.azcomputerguru.com
|
||||||
|
- User: mike@azcomputerguru.com
|
||||||
|
- Password: Gptf*77ttb123!@#-git
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Network Context (Dataforth Engineering Network)
|
||||||
|
|
||||||
|
| Device | IP | Role | Credentials |
|
||||||
|
|--------|-----|------|-------------|
|
||||||
|
| AD1 (you are here) | 192.168.0.27 | Primary Domain Controller | INTRANET\sysadmin / Paper123!@# |
|
||||||
|
| AD2 | 192.168.0.6 | Production Server (Win Server 2008 R2) | INTRANET\sysadmin / Paper123!@# |
|
||||||
|
| D2TESTNAS | 192.168.0.9 | TrueNAS, SMB1 proxy for DOS machines | root / (SSH key) or admin / Paper123!@#-nas |
|
||||||
|
| DOS Stations | 192.168.0.x | ~30 DOS 6.22 test machines (TS-XX) | N/A |
|
||||||
|
| UDM Gateway | 192.168.0.254 | UniFi Dream Machine | N/A |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## What We Already Know About TestDataSheetUploader
|
||||||
|
|
||||||
|
This is a VB.NET console app (.NET Framework 4.7.2) last built November 2, 2022.
|
||||||
|
|
||||||
|
### What it does
|
||||||
|
1. Calls `https://www.dataforth.com/Services/DirectoryManifest.aspx` to get a list of files already on the web server
|
||||||
|
2. Compares local files against that manifest (by filename, size, and last-modified date)
|
||||||
|
3. Uploads new/changed files via `https://www.dataforth.com/Services/Uploader.aspx`
|
||||||
|
4. Deletes files from server that no longer exist locally via `https://www.dataforth.com/Services/DeleteFile.aspx`
|
||||||
|
5. Only processes files modified in the current year
|
||||||
|
|
||||||
|
### Configured paths (from app.config)
|
||||||
|
- **Service auth:** username=DataforthWebShare, password=Data6277
|
||||||
|
- **TestDataSheetPath:** `C:\Users\hoffm\Documents\Customer Folders\Dataforth\product lists`
|
||||||
|
- **TestFolderPath:** `C:\Users\hoffm\Documents\Customer Folders\Dataforth\product lists`
|
||||||
|
- **InventoryDataStagingFolder:** `C:\TestDataSheetUploader\staging`
|
||||||
|
- **InventoryDataSourceFolder:** `C:\TestDataSheetUploader\src`
|
||||||
|
- **InventoryDataFiles:** AvSelCat.csv, AvSelCus.csv
|
||||||
|
|
||||||
|
### Server-side destination (from error logs)
|
||||||
|
```
|
||||||
|
C:\inetpub\wwwroot\dataforth.com\WebShare\ProcessCheckOutTestFolder\
|
||||||
|
```
|
||||||
|
|
||||||
|
### Key unknowns -- what you need to find out
|
||||||
|
- **Who is "hoffm"?** Likely a Hoffman who worked at Dataforth. Which machine was this?
|
||||||
|
- **Where do test datasheets originate?** The DOS machines run QuickBASIC data acquisition. Do they produce datasheet files?
|
||||||
|
- **Is there a path from DOS machines -> datasheets?** The DOS machines map `T:` to `\\D2TESTNAS\TEST`. Is there a datasheets share they write to?
|
||||||
|
- **Is the uploader still running?** Scheduled task? Manual? Last used?
|
||||||
|
- **Where does `C:\Users\hoffm\...` map to now?** Did someone take over this role?
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Investigation Steps
|
||||||
|
|
||||||
|
### On AD1 (this machine)
|
||||||
|
```powershell
|
||||||
|
# Check if TestDataSheetUploader exists anywhere on this machine
|
||||||
|
Get-ChildItem -Path C:\ -Recurse -Filter "TestDataSheetUploader*" -ErrorAction SilentlyContinue
|
||||||
|
|
||||||
|
# Check for Hoffman's profile or traces
|
||||||
|
Get-ChildItem C:\Users\ -Directory
|
||||||
|
Get-ChildItem "C:\Users\hoffm" -ErrorAction SilentlyContinue
|
||||||
|
|
||||||
|
# Check scheduled tasks for anything datasheet-related
|
||||||
|
Get-ScheduledTask | Where-Object { $_.TaskName -like "*data*" -or $_.TaskName -like "*sheet*" -or $_.TaskName -like "*upload*" -or $_.TaskName -like "*sync*" }
|
||||||
|
|
||||||
|
# Check for IIS sites (AD1 might host www.dataforth.com)
|
||||||
|
Import-Module WebAdministration -ErrorAction SilentlyContinue
|
||||||
|
Get-Website -ErrorAction SilentlyContinue
|
||||||
|
Get-ChildItem "C:\inetpub\wwwroot" -ErrorAction SilentlyContinue
|
||||||
|
```
|
||||||
|
|
||||||
|
### On AD2 (192.168.0.6)
|
||||||
|
```powershell
|
||||||
|
# Remote into AD2 and check
|
||||||
|
Invoke-Command -ComputerName 192.168.0.6 -Credential (Get-Credential INTRANET\sysadmin) -ScriptBlock {
|
||||||
|
# Check for the uploader
|
||||||
|
Get-ChildItem -Path C:\ -Recurse -Filter "TestDataSheetUploader*" -ErrorAction SilentlyContinue
|
||||||
|
|
||||||
|
# Check IIS
|
||||||
|
Get-ChildItem "C:\inetpub\wwwroot" -ErrorAction SilentlyContinue
|
||||||
|
|
||||||
|
# Check for the WebShare path from error logs
|
||||||
|
Get-ChildItem "C:\inetpub\wwwroot\dataforth.com\WebShare" -ErrorAction SilentlyContinue
|
||||||
|
|
||||||
|
# Check scheduled tasks
|
||||||
|
Get-ScheduledTask | Where-Object { $_.TaskName -like "*data*" -or $_.TaskName -like "*upload*" }
|
||||||
|
|
||||||
|
# Check user profiles
|
||||||
|
Get-ChildItem C:\Users\ -Directory
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### On D2TESTNAS (192.168.0.9)
|
||||||
|
```bash
|
||||||
|
# SSH from AD1 or any machine with access
|
||||||
|
ssh root@192.168.0.9
|
||||||
|
|
||||||
|
# Check datasheets share
|
||||||
|
ls -la /data/datasheets/
|
||||||
|
find /data/ -name "*datasheet*" -o -name "*TestData*" 2>/dev/null
|
||||||
|
|
||||||
|
# Check if DOS machines write any test output files
|
||||||
|
ls -la /data/test/TS-27/
|
||||||
|
find /data/test/ -name "*.pdf" -o -name "*.csv" -o -name "*.dat" 2>/dev/null
|
||||||
|
```
|
||||||
|
|
||||||
|
### Check the Dataforth website services
|
||||||
|
```powershell
|
||||||
|
# Test if the manifest service still responds
|
||||||
|
$cred = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes("DataforthWebShare:Data6277"))
|
||||||
|
Invoke-WebRequest -Uri "https://www.dataforth.com/Services/DirectoryManifest.aspx" -Headers @{Authorization="Basic $cred"} -Method GET -ErrorAction SilentlyContinue
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## DOS Test Machine Architecture (Full Context)
|
||||||
|
|
||||||
|
The DOS machines are ~30 stations running DOS 6.22 with QuickBASIC 4.5 data acquisition software.
|
||||||
|
|
||||||
|
```
|
||||||
|
DOS Machines (TS-XX) --SMB1--> D2TESTNAS (192.168.0.9) --SMB2/rsync--> AD2 (192.168.0.6)
|
||||||
|
| /data/test/ C:\Shares\test\
|
||||||
|
| /data/datasheets/ C:\Shares\datasheets (PENDING)
|
||||||
|
|
|
||||||
|
+-- Map T: = \\D2TESTNAS\TEST
|
||||||
|
+-- Run QuickBASIC data acquisition
|
||||||
|
+-- UPDATE.BAT for remote management
|
||||||
|
+-- TODO.BAT for remote task execution
|
||||||
|
```
|
||||||
|
|
||||||
|
**Bidirectional sync** runs every 15 minutes between D2TESTNAS and AD2 via `/root/sync-to-ad2.sh`.
|
||||||
|
|
||||||
|
The datasheets share (`\\D2TESTNAS\datasheets` -> `/data/datasheets/`) exists on D2TESTNAS but the corresponding AD2 share (`\\AD2\datasheets`) was never created -- it's listed as a remaining task. This may be relevant to the test datasheet pipeline.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Where to Save Your Findings
|
||||||
|
|
||||||
|
Write your investigation results to:
|
||||||
|
```
|
||||||
|
clients/dataforth/dos-test-machines/Test Datasheets/INVESTIGATION.md
|
||||||
|
```
|
||||||
|
|
||||||
|
Include:
|
||||||
|
- What you found on each machine
|
||||||
|
- The complete datasheet pipeline (or what's missing/broken)
|
||||||
|
- Whether the uploader is still active
|
||||||
|
- Recommendations for what to do next
|
||||||
|
|
||||||
|
Then commit and push to Gitea using the credentials above.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Contact
|
||||||
|
|
||||||
|
- **AJ at Dataforth** -- engineering contact, can answer questions about the test workflow
|
||||||
|
- **Coordinator instance** -- will see your findings after you push to Gitea
|
||||||
BIN
Test Datasheets/SpecData/5BMAIN.DAT
Normal file
BIN
Test Datasheets/SpecData/5BMAIN.DAT
Normal file
Binary file not shown.
BIN
Test Datasheets/SpecData/8BMAIN.DAT
Normal file
BIN
Test Datasheets/SpecData/8BMAIN.DAT
Normal file
Binary file not shown.
BIN
Test Datasheets/SpecData/DSCOUT.DAT
Normal file
BIN
Test Datasheets/SpecData/DSCOUT.DAT
Normal file
Binary file not shown.
BIN
Test Datasheets/SpecData/SCTMAIN.DAT
Normal file
BIN
Test Datasheets/SpecData/SCTMAIN.DAT
Normal file
Binary file not shown.
BIN
Test Datasheets/TestDataSheetUploader.zip
Normal file
BIN
Test Datasheets/TestDataSheetUploader.zip
Normal file
Binary file not shown.
158
Test Datasheets/TestDataSheetUploader/HTTPUploader.vb
Normal file
158
Test Datasheets/TestDataSheetUploader/HTTPUploader.vb
Normal file
@@ -0,0 +1,158 @@
|
|||||||
|
Imports System.Text
|
||||||
|
Imports System.Net
|
||||||
|
Imports System.IO
|
||||||
|
|
||||||
|
Public Class HTTPUploader
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Public Shared Function UploadFile(ByVal url As String, ByVal credentials As Net.NetworkCredential, ByVal localPathFilename As String, ByVal nvc As System.Collections.Specialized.NameValueCollection, ByRef LogMessage As String) As Boolean
|
||||||
|
Try
|
||||||
|
'Return True
|
||||||
|
Dim length As Long = 0
|
||||||
|
'Dim boundary As String = "----------------------------" & Date.Now.Ticks.ToString("x")
|
||||||
|
Dim boundary As String = "----------------------------061366199019971999"
|
||||||
|
|
||||||
|
Dim httpWebRequest2 As HttpWebRequest = WebRequest.Create(url)
|
||||||
|
httpWebRequest2.ContentType = "multipart/form-data; boundary=" & boundary
|
||||||
|
httpWebRequest2.Method = "POST"
|
||||||
|
httpWebRequest2.KeepAlive = True
|
||||||
|
httpWebRequest2.Credentials = credentials
|
||||||
|
httpWebRequest2.Timeout = 900000
|
||||||
|
|
||||||
|
|
||||||
|
Dim memStream As New System.IO.MemoryStream()
|
||||||
|
|
||||||
|
Dim boundarybytes() As Byte = System.Text.Encoding.ASCII.GetBytes(vbCrLf & "--" & boundary & vbCrLf)
|
||||||
|
|
||||||
|
|
||||||
|
Dim formdataTemplate As String = vbCrLf & "--" + boundary & vbCrLf & "Content-Disposition: form-data; name=""{0}"";" & vbCrLf & vbCrLf & "{1}"
|
||||||
|
|
||||||
|
For Each key As String In nvc.Keys
|
||||||
|
Dim formitem As String = String.Format(formdataTemplate, key, nvc(key))
|
||||||
|
Dim formitembytes() As Byte = System.Text.Encoding.UTF8.GetBytes(formitem)
|
||||||
|
memStream.Write(formitembytes, 0, formitembytes.Length)
|
||||||
|
Next
|
||||||
|
|
||||||
|
|
||||||
|
memStream.Write(boundarybytes, 0, boundarybytes.Length)
|
||||||
|
|
||||||
|
Dim headerTemplate As String = "Content-Disposition: form-data; name=""{0}""; filename=""{1}"" " & _
|
||||||
|
"Content-Type: application/octet-stream" & vbCrLf & vbCrLf
|
||||||
|
|
||||||
|
'Content-Type: application/octet-stream
|
||||||
|
|
||||||
|
|
||||||
|
'string header = string.Format(headerTemplate, "file" + i, files[i]);
|
||||||
|
Dim header As String = String.Format(headerTemplate, "file1", localPathFilename)
|
||||||
|
|
||||||
|
Dim headerbytes() As Byte = System.Text.Encoding.UTF8.GetBytes(header)
|
||||||
|
|
||||||
|
memStream.Write(headerbytes, 0, headerbytes.Length)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Dim byteArray As Byte() = File.ReadAllBytes(localPathFilename)
|
||||||
|
memStream.Write(byteArray, 0, byteArray.Length)
|
||||||
|
|
||||||
|
memStream.Write(boundarybytes, 0, boundarybytes.Length)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
httpWebRequest2.ContentLength = memStream.Length + 1
|
||||||
|
|
||||||
|
Dim requestStream As Stream = httpWebRequest2.GetRequestStream()
|
||||||
|
|
||||||
|
memStream.Position = 0
|
||||||
|
Dim tempBuffer(memStream.Length) As Byte
|
||||||
|
memStream.Read(tempBuffer, 0, tempBuffer.Length)
|
||||||
|
memStream.Close()
|
||||||
|
requestStream.Write(tempBuffer, 0, tempBuffer.Length)
|
||||||
|
requestStream.Close()
|
||||||
|
|
||||||
|
Dim webResponse2 As WebResponse = httpWebRequest2.GetResponse()
|
||||||
|
|
||||||
|
Dim stream2 As Stream = webResponse2.GetResponseStream()
|
||||||
|
Dim reader2 As New StreamReader(stream2)
|
||||||
|
|
||||||
|
Dim xmlResponse As String = reader2.ReadToEnd
|
||||||
|
|
||||||
|
webResponse2.Close()
|
||||||
|
httpWebRequest2 = Nothing
|
||||||
|
webResponse2 = Nothing
|
||||||
|
|
||||||
|
|
||||||
|
Dim ds As New DataSet
|
||||||
|
ds.ReadXml(New System.Xml.XmlTextReader(New StringReader(xmlResponse)))
|
||||||
|
|
||||||
|
Dim responseMessage As String = ds.Tables("Result").Rows(0)("Message")
|
||||||
|
If responseMessage = "SUCCESS" Then
|
||||||
|
Dim uploadedFilesize As Long = ds.Tables("Result").Rows(0)("SavedFileSize")
|
||||||
|
If My.Computer.FileSystem.GetFileInfo(localPathFilename).Length = uploadedFilesize Then
|
||||||
|
'we are done
|
||||||
|
Return True
|
||||||
|
Else
|
||||||
|
LogMessage = "Uploaded filesize (" & uploadedFilesize & ") does not match local filesize (" & My.Computer.FileSystem.GetFileInfo(localPathFilename).Length & ")"
|
||||||
|
End If
|
||||||
|
Else
|
||||||
|
LogMessage = "Dataforth Service Upload Error: " & ds.Tables("Result").Rows(0)("ErrorMessage")
|
||||||
|
End If
|
||||||
|
Return False
|
||||||
|
Catch ex As Exception
|
||||||
|
LogMessage = "Exception while uploading to Dataforth Service: " & ex.ToString
|
||||||
|
Return False
|
||||||
|
End Try
|
||||||
|
End Function
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
'Public Shared Sub _UploadVideo_(ByVal url As String, ByVal credentials As Net.NetworkCredential, ByVal localPathFilename As String, ByVal nvc As System.Collections.Specialized.NameValueCollection)
|
||||||
|
' Try
|
||||||
|
' Dim client As New WebClient
|
||||||
|
' client.Credentials = credentials
|
||||||
|
' Dim bogus As Integer = -1
|
||||||
|
' Dim requestURL As String = url & "?ecsId=" & nvc.Get("ecsId")
|
||||||
|
' 'requestURL = requestURL.Replace("https://", "http://")
|
||||||
|
|
||||||
|
' Dim response() As Byte = client.UploadFile(requestURL, localPathFilename)
|
||||||
|
' MsgBox(System.Text.Encoding.Unicode.GetString(response))
|
||||||
|
' Catch webEx As WebException
|
||||||
|
' Dim thisE As String = webEx.ToString
|
||||||
|
|
||||||
|
' Catch ex As Exception
|
||||||
|
|
||||||
|
' End Try
|
||||||
|
'End Sub
|
||||||
|
|
||||||
|
|
||||||
|
'Public Shared Sub UploadVideo__(ByVal url As String, ByVal credentials As Net.NetworkCredential, ByVal localPathFilename As String, ByVal nvc As System.Collections.Specialized.NameValueCollection)
|
||||||
|
|
||||||
|
' Dim requestURL As String = url
|
||||||
|
' Dim boundary As String = "----------------------------" & Date.Now.Ticks.ToString("x")
|
||||||
|
|
||||||
|
' 'Create Request
|
||||||
|
' Dim webRequest As System.Net.HttpWebRequest = CType(System.Net.WebRequest.Create(requestURL), System.Net.HttpWebRequest)
|
||||||
|
' webRequest.Credentials = credentials
|
||||||
|
' webRequest.Timeout = 120000
|
||||||
|
' 'System.Net.ServicePointManager.ServerCertificateValidationCallback = (Function(sender, certificate, chain, sslPolicyErrors) True)
|
||||||
|
' 'webRequest.ContentType = "application/x-www-form-urlencoded"
|
||||||
|
' webRequest.ContentType = "multipart/form-data; boundary=" & boundary
|
||||||
|
' webRequest.Method = "POST"
|
||||||
|
|
||||||
|
|
||||||
|
' Dim byteArray As Byte() = File.ReadAllBytes(localPathFilename)
|
||||||
|
' webRequest.ContentLength = byteArray.Length
|
||||||
|
' Dim dataStream As Stream = webRequest.GetRequestStream
|
||||||
|
' dataStream.Write(byteArray, 0, byteArray.Length)
|
||||||
|
' dataStream.Close()
|
||||||
|
|
||||||
|
|
||||||
|
' ' Retrieve data from Response
|
||||||
|
' Dim webResponse As System.Net.HttpWebResponse = CType(webRequest.GetResponse(), System.Net.HttpWebResponse)
|
||||||
|
' Dim sr As New System.IO.StreamReader(webResponse.GetResponseStream(), System.Text.Encoding.UTF8)
|
||||||
|
' Dim responseString As String = sr.ReadToEnd()
|
||||||
|
' MsgBox(responseString)
|
||||||
|
|
||||||
|
'End Sub
|
||||||
|
|
||||||
|
End Class
|
||||||
264
Test Datasheets/TestDataSheetUploader/Module1.vb
Normal file
264
Test Datasheets/TestDataSheetUploader/Module1.vb
Normal file
@@ -0,0 +1,264 @@
|
|||||||
|
Module Module1
|
||||||
|
|
||||||
|
Private processLog As System.Text.StringBuilder
|
||||||
|
|
||||||
|
Sub Main()
|
||||||
|
processLog = New System.Text.StringBuilder()
|
||||||
|
Dim appSettings As New Configuration.AppSettingsReader
|
||||||
|
|
||||||
|
|
||||||
|
'for testing only
|
||||||
|
'UploadFilesInDirectory("C:\Users\hoffm\Documents\Customer Folders\Dataforth\product lists", "TestFolder")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
'CopyInventoryFilesToStagingFolder()
|
||||||
|
'SyncFolder("InventoryDataFolder")
|
||||||
|
|
||||||
|
SyncFolder("TestDataSheet")
|
||||||
|
|
||||||
|
|
||||||
|
Dim logFilename As String = My.Application.Info.DirectoryPath & "\processLog." & Now.ToString("yyyy.MM.dd.HH.mm.ss") & ".txt"
|
||||||
|
My.Computer.FileSystem.WriteAllText(logFilename, processLog.ToString, False)
|
||||||
|
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub AddToLog(ByVal message As String, ByVal Echo As Boolean)
|
||||||
|
processLog.Append(Now.ToString("MM/dd/YYYY HH:mm:ss | ") & message & vbCrLf)
|
||||||
|
If Echo Then
|
||||||
|
Console.WriteLine(message)
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
|
||||||
|
Public Sub CopyInventoryFilesToStagingFolder()
|
||||||
|
|
||||||
|
Dim appSettings As New Configuration.AppSettingsReader
|
||||||
|
Dim stagingFolderPath As String = appSettings.GetValue("InventoryDataStagingFolder", GetType(String))
|
||||||
|
Dim srcFolderPath As String = appSettings.GetValue("InventoryDataSourceFolder", GetType(String))
|
||||||
|
Dim filenamesStr As String = appSettings.GetValue("InventoryDataFiles", GetType(String))
|
||||||
|
|
||||||
|
Dim filenames() As String = filenamesStr.Split(",")
|
||||||
|
|
||||||
|
For Each thisFilename As String In filenames
|
||||||
|
Dim src As String = srcFolderPath & "\" & thisFilename
|
||||||
|
Dim dest As String = stagingFolderPath & "\" & thisFilename
|
||||||
|
My.Computer.FileSystem.CopyFile(src, dest, True)
|
||||||
|
Next
|
||||||
|
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
|
||||||
|
Public Sub UploadFilesInDirectory(ByVal DirectoryPath As String, ByVal UploadType As String)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Dim appSettings As New Configuration.AppSettingsReader
|
||||||
|
Dim username As String = appSettings.GetValue("ServiceUsername", GetType(String))
|
||||||
|
Dim password As String = appSettings.GetValue("ServicePassword", GetType(String))
|
||||||
|
Dim serviceCredentials As New Net.NetworkCredential(username, password)
|
||||||
|
Dim url As String = appSettings.GetValue("UploaderServiceURL", GetType(String))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
For Each thisFile As String In My.Computer.FileSystem.GetFiles(DirectoryPath)
|
||||||
|
|
||||||
|
Dim formParameters As New System.Collections.Specialized.NameValueCollection
|
||||||
|
formParameters.Add("UploadType", UploadType)
|
||||||
|
|
||||||
|
Dim logMessage As New String("")
|
||||||
|
Console.WriteLine("Uploading: " & thisFile)
|
||||||
|
If HTTPUploader.UploadFile(url, serviceCredentials, thisFile, formParameters, logMessage) Then
|
||||||
|
'this video is now staged
|
||||||
|
AddToLog("Uploaded " & thisFile, True)
|
||||||
|
|
||||||
|
My.Computer.FileSystem.DeleteFile(thisFile)
|
||||||
|
Else
|
||||||
|
|
||||||
|
AddToLog("Upload FAILED for " & thisFile, True)
|
||||||
|
AddToLog("Upload FAIL MESSAGE: " & logMessage, False)
|
||||||
|
Console.WriteLine("ERROR: " & logMessage)
|
||||||
|
End If
|
||||||
|
|
||||||
|
|
||||||
|
Next
|
||||||
|
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Public Sub SyncFolder(ByVal FolderAlias As String)
|
||||||
|
Try
|
||||||
|
AddToLog("SyncFolder(" & FolderAlias & ") started.", True)
|
||||||
|
'get manifest of files that are on server mirror
|
||||||
|
Dim appSettings As New Configuration.AppSettingsReader
|
||||||
|
Dim username As String = appSettings.GetValue("ServiceUsername", GetType(String))
|
||||||
|
Dim password As String = appSettings.GetValue("ServicePassword", GetType(String))
|
||||||
|
Dim serviceCredentials As New Net.NetworkCredential(username, password)
|
||||||
|
Dim manifestServiceUrl As String = appSettings.GetValue("DirectoryManifestServiceURL", GetType(String))
|
||||||
|
Dim uploadServiceUrl As String = appSettings.GetValue("UploaderServiceURL", GetType(String))
|
||||||
|
Dim deleteServiceUrl As String = appSettings.GetValue("DeleteFileServiceURL", GetType(String))
|
||||||
|
Dim testMode As Boolean = appSettings.GetValue("TestMode", GetType(Boolean))
|
||||||
|
|
||||||
|
'Create an XML file to post with the request
|
||||||
|
Dim requestDS As New DataSet("Request")
|
||||||
|
Dim requestDT As New DataTable("RequestData")
|
||||||
|
requestDT.Columns.Add("SyncPathAlias", GetType(String))
|
||||||
|
requestDS.Tables.Add(requestDT)
|
||||||
|
Dim requestDR As DataRow = requestDT.NewRow
|
||||||
|
requestDR("SyncPathAlias") = FolderAlias
|
||||||
|
requestDT.Rows.Add(requestDR)
|
||||||
|
|
||||||
|
'Get Dataset from XML response
|
||||||
|
Dim manifestXML As String = CSFramework_Utilities.XMLData.DownloadXMLWithDatasetPost(manifestServiceUrl, requestDS, serviceCredentials)
|
||||||
|
|
||||||
|
My.Computer.FileSystem.WriteAllText(My.Application.Info.DirectoryPath & "\manifest.xml", manifestXML, False)
|
||||||
|
|
||||||
|
Dim ds As DataSet = CSFramework_Utilities.XMLData.DatasetFromXML(manifestXML)
|
||||||
|
|
||||||
|
AddToLog("Manifest downloaded with " & ds.Tables("ContentFile").Rows.Count & " files.", True)
|
||||||
|
|
||||||
|
'Build a list of files that should be uploaded
|
||||||
|
Dim filesToUpload As New List(Of String)
|
||||||
|
|
||||||
|
Dim localFolderPath As String = ""
|
||||||
|
Select Case FolderAlias
|
||||||
|
Case "TestDataSheet"
|
||||||
|
localFolderPath = appSettings.GetValue("TestDataSheetPath", GetType(String))
|
||||||
|
Case "TestFolder"
|
||||||
|
localFolderPath = appSettings.GetValue("TestFolderPath", GetType(String))
|
||||||
|
Case "InventoryDataFolder"
|
||||||
|
localFolderPath = appSettings.GetValue("InventoryDataStagingFolder", GetType(String))
|
||||||
|
End Select
|
||||||
|
|
||||||
|
Dim discoveryFileCount As Integer = 0
|
||||||
|
Dim discoveryFileEchoCount As Integer = 1000
|
||||||
|
|
||||||
|
Dim sourceFolder As New System.IO.DirectoryInfo(localFolderPath)
|
||||||
|
AddToLog("Accessing local folder: " & localFolderPath, True)
|
||||||
|
|
||||||
|
For Each thisLocalFileInfo As System.IO.FileInfo In sourceFolder.GetFiles
|
||||||
|
discoveryFileCount += 1
|
||||||
|
If discoveryFileCount = 1 Then
|
||||||
|
AddToLog("Found at least 1 file in local folder", True)
|
||||||
|
End If
|
||||||
|
If discoveryFileCount = discoveryFileEchoCount Then
|
||||||
|
AddToLog("Discovery file count: " & discoveryFileEchoCount, True)
|
||||||
|
discoveryFileEchoCount += 1000
|
||||||
|
End If
|
||||||
|
'Dim thisLocalFileInfo As New System.IO.FileInfo(thisLocalFile)
|
||||||
|
|
||||||
|
|
||||||
|
If thisLocalFileInfo.LastWriteTimeUtc.Year = Now.Year Then
|
||||||
|
Dim foundMatchingFileOnServer As Boolean = False
|
||||||
|
If ds.Tables.Contains("ContentFile") Then
|
||||||
|
For Each dr As DataRow In ds.Tables("ContentFile").Rows
|
||||||
|
If dr("Filename").ToString = thisLocalFileInfo.Name Then
|
||||||
|
Dim filesize As Integer = dr("Filesize")
|
||||||
|
Dim datelastupdated As Date = dr("DateLastUpdated")
|
||||||
|
datelastupdated = datelastupdated.ToUniversalTime
|
||||||
|
If filesize = thisLocalFileInfo.Length Then
|
||||||
|
If thisLocalFileInfo.LastWriteTimeUtc.ToString("yyyy.MM.dd.HH.mm.ss") = datelastupdated.ToString("yyyy.MM.dd.HH.mm.ss") Then
|
||||||
|
foundMatchingFileOnServer = True
|
||||||
|
Exit For
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
End If
|
||||||
|
If Not foundMatchingFileOnServer Then
|
||||||
|
filesToUpload.Add(thisLocalFileInfo.FullName)
|
||||||
|
AddToLog("Requesting upload: " & thisLocalFileInfo.Name, True)
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
|
||||||
|
AddToLog("Found " & filesToUpload.Count & " files that need to be uploaded.", True)
|
||||||
|
|
||||||
|
'Upload Files to Server
|
||||||
|
If Not testMode Then
|
||||||
|
For Each thisFile As String In filesToUpload
|
||||||
|
Dim thisLocalFileInfo As New System.IO.FileInfo(thisFile)
|
||||||
|
Dim formParameters As New System.Collections.Specialized.NameValueCollection
|
||||||
|
formParameters.Add("UploadType", FolderAlias)
|
||||||
|
'Request("LastUpdatedDate")
|
||||||
|
formParameters.Add("LastUpdatedDate", thisLocalFileInfo.LastWriteTimeUtc.ToString("yyyy-MM-ddTHH:mm:ss.fffffffZ"))
|
||||||
|
'2015-12-11T17:38:05.9190462Z
|
||||||
|
|
||||||
|
Dim logMessage As New String("")
|
||||||
|
Console.WriteLine("Uploading: " & thisFile)
|
||||||
|
If HTTPUploader.UploadFile(uploadServiceUrl, serviceCredentials, thisFile, formParameters, logMessage) Then
|
||||||
|
'this file is now staged
|
||||||
|
AddToLog("Uploaded file: " & thisFile, True)
|
||||||
|
|
||||||
|
'My.Computer.FileSystem.DeleteFile(thisFile)
|
||||||
|
Else
|
||||||
|
|
||||||
|
AddToLog("Upload FAILED for " & thisFile, True)
|
||||||
|
AddToLog("Upload FAIL MESSAGE: " & logMessage, False)
|
||||||
|
Console.WriteLine("ERROR: " & logMessage)
|
||||||
|
End If
|
||||||
|
|
||||||
|
|
||||||
|
Next
|
||||||
|
End If
|
||||||
|
|
||||||
|
|
||||||
|
'Create dataset for DeleteFile service
|
||||||
|
Dim deleteDS As New DataSet("DeleteRequestData")
|
||||||
|
|
||||||
|
|
||||||
|
'add request data
|
||||||
|
Dim deleteRD As New DataTable("RequestData")
|
||||||
|
deleteRD.Columns.Add("SyncPathAlias", GetType(String))
|
||||||
|
Dim deleteDataDR As DataRow = deleteRD.NewRow
|
||||||
|
deleteDataDR("SyncPathAlias") = FolderAlias
|
||||||
|
deleteRD.Rows.Add(deleteDataDR)
|
||||||
|
deleteDS.Tables.Add(deleteRD)
|
||||||
|
|
||||||
|
|
||||||
|
'add filenames
|
||||||
|
Dim deleteDT As New DataTable("Filenames")
|
||||||
|
deleteDT.Columns.Add("Filename", GetType(String))
|
||||||
|
deleteDS.Tables.Add(deleteDT)
|
||||||
|
|
||||||
|
If ds.Tables.Contains("ContentFile") Then
|
||||||
|
For Each dr As DataRow In ds.Tables("ContentFile").Rows
|
||||||
|
Dim localFileName As String = localFolderPath & "\" & dr("Filename").ToString
|
||||||
|
If Not My.Computer.FileSystem.FileExists(localFileName) Then
|
||||||
|
|
||||||
|
Dim deleteDR As DataRow = deleteDT.NewRow
|
||||||
|
deleteDR("Filename") = dr("Filename").ToString
|
||||||
|
deleteDT.Rows.Add(deleteDR)
|
||||||
|
|
||||||
|
AddToLog("Requested " & FolderAlias & " Delete: " & dr("Filename").ToString, True)
|
||||||
|
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
End If
|
||||||
|
|
||||||
|
AddToLog("Found " & deleteDT.Rows.Count & " files to delete.", True)
|
||||||
|
|
||||||
|
|
||||||
|
'Delete obsolete files that were detected
|
||||||
|
If Not testMode Then
|
||||||
|
If deleteDT.Rows.Count > 0 Then
|
||||||
|
Dim deleteResponseXML As String = CSFramework_Utilities.XMLData.DownloadXMLWithDatasetPost(deleteServiceUrl, deleteDS, serviceCredentials)
|
||||||
|
AddToLog("Obsolete " & FolderAlias & " files deleted.", True)
|
||||||
|
Else
|
||||||
|
AddToLog("No obsolete " & FolderAlias & " files were detected.", True)
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
|
||||||
|
Catch ex As Exception
|
||||||
|
AddToLog("Exception in SyncFolder: " & ex.ToString, True)
|
||||||
|
|
||||||
|
|
||||||
|
End Try
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
|
||||||
|
End Module
|
||||||
13
Test Datasheets/TestDataSheetUploader/My Project/Application.Designer.vb
generated
Normal file
13
Test Datasheets/TestDataSheetUploader/My Project/Application.Designer.vb
generated
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
'------------------------------------------------------------------------------
|
||||||
|
' <auto-generated>
|
||||||
|
' This code was generated by a tool.
|
||||||
|
' Runtime Version:4.0.30319.42000
|
||||||
|
'
|
||||||
|
' Changes to this file may cause incorrect behavior and will be lost if
|
||||||
|
' the code is regenerated.
|
||||||
|
' </auto-generated>
|
||||||
|
'------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Option Strict On
|
||||||
|
Option Explicit On
|
||||||
|
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<MyApplicationData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||||
|
<MySubMain>false</MySubMain>
|
||||||
|
<SingleInstance>false</SingleInstance>
|
||||||
|
<ShutdownMode>0</ShutdownMode>
|
||||||
|
<EnableVisualStyles>true</EnableVisualStyles>
|
||||||
|
<AuthenticationMode>0</AuthenticationMode>
|
||||||
|
<ApplicationType>2</ApplicationType>
|
||||||
|
<SaveMySettingsOnExit>true</SaveMySettingsOnExit>
|
||||||
|
</MyApplicationData>
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
Imports System
|
||||||
|
Imports System.Reflection
|
||||||
|
Imports System.Runtime.InteropServices
|
||||||
|
|
||||||
|
' General Information about an assembly is controlled through the following
|
||||||
|
' set of attributes. Change these attribute values to modify the information
|
||||||
|
' associated with an assembly.
|
||||||
|
|
||||||
|
' Review the values of the assembly attributes
|
||||||
|
|
||||||
|
<Assembly: AssemblyTitle("TestDataSheetUploader")>
|
||||||
|
<Assembly: AssemblyDescription("")>
|
||||||
|
<Assembly: AssemblyCompany("Hewlett-Packard")>
|
||||||
|
<Assembly: AssemblyProduct("TestDataSheetUploader")>
|
||||||
|
<Assembly: AssemblyCopyright("Copyright © Hewlett-Packard 2016")>
|
||||||
|
<Assembly: AssemblyTrademark("")>
|
||||||
|
|
||||||
|
<Assembly: ComVisible(False)>
|
||||||
|
|
||||||
|
'The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||||
|
<Assembly: Guid("7fe555fe-f768-41e5-b89d-89289692ba0e")>
|
||||||
|
|
||||||
|
' Version information for an assembly consists of the following four values:
|
||||||
|
'
|
||||||
|
' Major Version
|
||||||
|
' Minor Version
|
||||||
|
' Build Number
|
||||||
|
' Revision
|
||||||
|
'
|
||||||
|
' You can specify all the values or you can default the Build and Revision Numbers
|
||||||
|
' by using the '*' as shown below:
|
||||||
|
' <Assembly: AssemblyVersion("1.0.*")>
|
||||||
|
|
||||||
|
<Assembly: AssemblyVersion("1.0.0.0")>
|
||||||
|
<Assembly: AssemblyFileVersion("1.0.0.0")>
|
||||||
63
Test Datasheets/TestDataSheetUploader/My Project/Resources.Designer.vb
generated
Normal file
63
Test Datasheets/TestDataSheetUploader/My Project/Resources.Designer.vb
generated
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
'------------------------------------------------------------------------------
|
||||||
|
' <auto-generated>
|
||||||
|
' This code was generated by a tool.
|
||||||
|
' Runtime Version:4.0.30319.42000
|
||||||
|
'
|
||||||
|
' Changes to this file may cause incorrect behavior and will be lost if
|
||||||
|
' the code is regenerated.
|
||||||
|
' </auto-generated>
|
||||||
|
'------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Option Strict On
|
||||||
|
Option Explicit On
|
||||||
|
|
||||||
|
Imports System
|
||||||
|
|
||||||
|
Namespace My.Resources
|
||||||
|
|
||||||
|
'This class was auto-generated by the StronglyTypedResourceBuilder
|
||||||
|
'class via a tool like ResGen or Visual Studio.
|
||||||
|
'To add or remove a member, edit your .ResX file then rerun ResGen
|
||||||
|
'with the /str option, or rebuild your VS project.
|
||||||
|
'''<summary>
|
||||||
|
''' A strongly-typed resource class, for looking up localized strings, etc.
|
||||||
|
'''</summary>
|
||||||
|
<Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0"), _
|
||||||
|
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
|
||||||
|
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
|
||||||
|
Global.Microsoft.VisualBasic.HideModuleNameAttribute()> _
|
||||||
|
Friend Module Resources
|
||||||
|
|
||||||
|
Private resourceMan As Global.System.Resources.ResourceManager
|
||||||
|
|
||||||
|
Private resourceCulture As Global.System.Globalization.CultureInfo
|
||||||
|
|
||||||
|
'''<summary>
|
||||||
|
''' Returns the cached ResourceManager instance used by this class.
|
||||||
|
'''</summary>
|
||||||
|
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
|
||||||
|
Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
|
||||||
|
Get
|
||||||
|
If Object.ReferenceEquals(resourceMan, Nothing) Then
|
||||||
|
Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("TestDataSheetUploader.Resources", GetType(Resources).Assembly)
|
||||||
|
resourceMan = temp
|
||||||
|
End If
|
||||||
|
Return resourceMan
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
|
'''<summary>
|
||||||
|
''' Overrides the current thread's CurrentUICulture property for all
|
||||||
|
''' resource lookups using this strongly typed resource class.
|
||||||
|
'''</summary>
|
||||||
|
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
|
||||||
|
Friend Property Culture() As Global.System.Globalization.CultureInfo
|
||||||
|
Get
|
||||||
|
Return resourceCulture
|
||||||
|
End Get
|
||||||
|
Set
|
||||||
|
resourceCulture = value
|
||||||
|
End Set
|
||||||
|
End Property
|
||||||
|
End Module
|
||||||
|
End Namespace
|
||||||
117
Test Datasheets/TestDataSheetUploader/My Project/Resources.resx
Normal file
117
Test Datasheets/TestDataSheetUploader/My Project/Resources.resx
Normal file
@@ -0,0 +1,117 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
</root>
|
||||||
73
Test Datasheets/TestDataSheetUploader/My Project/Settings.Designer.vb
generated
Normal file
73
Test Datasheets/TestDataSheetUploader/My Project/Settings.Designer.vb
generated
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
'------------------------------------------------------------------------------
|
||||||
|
' <auto-generated>
|
||||||
|
' This code was generated by a tool.
|
||||||
|
' Runtime Version:4.0.30319.42000
|
||||||
|
'
|
||||||
|
' Changes to this file may cause incorrect behavior and will be lost if
|
||||||
|
' the code is regenerated.
|
||||||
|
' </auto-generated>
|
||||||
|
'------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Option Strict On
|
||||||
|
Option Explicit On
|
||||||
|
|
||||||
|
|
||||||
|
Namespace My
|
||||||
|
|
||||||
|
<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
|
||||||
|
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0"), _
|
||||||
|
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
|
||||||
|
Partial Friend NotInheritable Class MySettings
|
||||||
|
Inherits Global.System.Configuration.ApplicationSettingsBase
|
||||||
|
|
||||||
|
Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings)
|
||||||
|
|
||||||
|
#Region "My.Settings Auto-Save Functionality"
|
||||||
|
#If _MyType = "WindowsForms" Then
|
||||||
|
Private Shared addedHandler As Boolean
|
||||||
|
|
||||||
|
Private Shared addedHandlerLockObject As New Object
|
||||||
|
|
||||||
|
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
|
||||||
|
Private Shared Sub AutoSaveSettings(ByVal sender As Global.System.Object, ByVal e As Global.System.EventArgs)
|
||||||
|
If My.Application.SaveMySettingsOnExit Then
|
||||||
|
My.Settings.Save()
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
#End If
|
||||||
|
#End Region
|
||||||
|
|
||||||
|
Public Shared ReadOnly Property [Default]() As MySettings
|
||||||
|
Get
|
||||||
|
|
||||||
|
#If _MyType = "WindowsForms" Then
|
||||||
|
If Not addedHandler Then
|
||||||
|
SyncLock addedHandlerLockObject
|
||||||
|
If Not addedHandler Then
|
||||||
|
AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings
|
||||||
|
addedHandler = True
|
||||||
|
End If
|
||||||
|
End SyncLock
|
||||||
|
End If
|
||||||
|
#End If
|
||||||
|
Return defaultInstance
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
End Class
|
||||||
|
End Namespace
|
||||||
|
|
||||||
|
Namespace My
|
||||||
|
|
||||||
|
<Global.Microsoft.VisualBasic.HideModuleNameAttribute(), _
|
||||||
|
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
|
||||||
|
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute()> _
|
||||||
|
Friend Module MySettingsProperty
|
||||||
|
|
||||||
|
<Global.System.ComponentModel.Design.HelpKeywordAttribute("My.Settings")> _
|
||||||
|
Friend ReadOnly Property Settings() As Global.TestDataSheetUploader.My.MySettings
|
||||||
|
Get
|
||||||
|
Return Global.TestDataSheetUploader.My.MySettings.Default
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
End Module
|
||||||
|
End Namespace
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
<?xml version='1.0' encoding='utf-8'?>
|
||||||
|
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" UseMySettingsClassName="true">
|
||||||
|
<Profiles>
|
||||||
|
<Profile Name="(Default)" />
|
||||||
|
</Profiles>
|
||||||
|
<Settings />
|
||||||
|
</SettingsFile>
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio 14
|
||||||
|
VisualStudioVersion = 14.0.25420.1
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "TestDataSheetUploader", "TestDataSheetUploader\TestDataSheetUploader.vbproj", "{78941EA8-4EF5-4194-99CD-A08CBB7B52FB}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
Release|Any CPU = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{78941EA8-4EF5-4194-99CD-A08CBB7B52FB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{78941EA8-4EF5-4194-99CD-A08CBB7B52FB}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{78941EA8-4EF5-4194-99CD-A08CBB7B52FB}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{78941EA8-4EF5-4194-99CD-A08CBB7B52FB}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
||||||
@@ -0,0 +1,120 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||||
|
<PropertyGroup>
|
||||||
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
|
<ProjectGuid>{78941EA8-4EF5-4194-99CD-A08CBB7B52FB}</ProjectGuid>
|
||||||
|
<OutputType>Exe</OutputType>
|
||||||
|
<StartupObject>TestDataSheetUploader.Module1</StartupObject>
|
||||||
|
<RootNamespace>TestDataSheetUploader</RootNamespace>
|
||||||
|
<AssemblyName>TestDataSheetUploader</AssemblyName>
|
||||||
|
<FileAlignment>512</FileAlignment>
|
||||||
|
<MyType>Console</MyType>
|
||||||
|
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
|
||||||
|
<TargetFrameworkProfile />
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<DefineDebug>true</DefineDebug>
|
||||||
|
<DefineTrace>true</DefineTrace>
|
||||||
|
<OutputPath>bin\Debug\</OutputPath>
|
||||||
|
<DocumentationFile>TestDataSheetUploader.xml</DocumentationFile>
|
||||||
|
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
|
||||||
|
<Prefer32Bit>false</Prefer32Bit>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<DefineDebug>false</DefineDebug>
|
||||||
|
<DefineTrace>true</DefineTrace>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<OutputPath>bin\Release\</OutputPath>
|
||||||
|
<DocumentationFile>TestDataSheetUploader.xml</DocumentationFile>
|
||||||
|
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
|
||||||
|
<Prefer32Bit>false</Prefer32Bit>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup>
|
||||||
|
<OptionExplicit>On</OptionExplicit>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup>
|
||||||
|
<OptionCompare>Binary</OptionCompare>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup>
|
||||||
|
<OptionStrict>Off</OptionStrict>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup>
|
||||||
|
<OptionInfer>On</OptionInfer>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Reference Include="System" />
|
||||||
|
<Reference Include="System.Data" />
|
||||||
|
<Reference Include="System.Deployment" />
|
||||||
|
<Reference Include="System.Xml" />
|
||||||
|
<Reference Include="System.Core" />
|
||||||
|
<Reference Include="System.Xml.Linq" />
|
||||||
|
<Reference Include="System.Data.DataSetExtensions" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Import Include="Microsoft.VisualBasic" />
|
||||||
|
<Import Include="System" />
|
||||||
|
<Import Include="System.Collections" />
|
||||||
|
<Import Include="System.Collections.Generic" />
|
||||||
|
<Import Include="System.Data" />
|
||||||
|
<Import Include="System.Diagnostics" />
|
||||||
|
<Import Include="System.Linq" />
|
||||||
|
<Import Include="System.Xml.Linq" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="HTTPUploader.vb" />
|
||||||
|
<Compile Include="Module1.vb" />
|
||||||
|
<Compile Include="My Project\AssemblyInfo.vb" />
|
||||||
|
<Compile Include="My Project\Application.Designer.vb">
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
<DependentUpon>Application.myapp</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="My Project\Resources.Designer.vb">
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
<DesignTime>True</DesignTime>
|
||||||
|
<DependentUpon>Resources.resx</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="My Project\Settings.Designer.vb">
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
<DependentUpon>Settings.settings</DependentUpon>
|
||||||
|
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="XMLData.vb" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<EmbeddedResource Include="My Project\Resources.resx">
|
||||||
|
<Generator>VbMyResourcesResXFileCodeGenerator</Generator>
|
||||||
|
<LastGenOutput>Resources.Designer.vb</LastGenOutput>
|
||||||
|
<CustomToolNamespace>My.Resources</CustomToolNamespace>
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
</EmbeddedResource>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="app.config">
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
</None>
|
||||||
|
<None Include="My Project\Application.myapp">
|
||||||
|
<Generator>MyApplicationCodeGenerator</Generator>
|
||||||
|
<LastGenOutput>Application.Designer.vb</LastGenOutput>
|
||||||
|
</None>
|
||||||
|
<None Include="My Project\Settings.settings">
|
||||||
|
<Generator>SettingsSingleFileGenerator</Generator>
|
||||||
|
<CustomToolNamespace>My</CustomToolNamespace>
|
||||||
|
<LastGenOutput>Settings.Designer.vb</LastGenOutput>
|
||||||
|
</None>
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
|
||||||
|
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||||
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
|
<Target Name="BeforeBuild">
|
||||||
|
</Target>
|
||||||
|
<Target Name="AfterBuild">
|
||||||
|
</Target>
|
||||||
|
-->
|
||||||
|
</Project>
|
||||||
81
Test Datasheets/TestDataSheetUploader/XMLData.vb
Normal file
81
Test Datasheets/TestDataSheetUploader/XMLData.vb
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
Imports System.Xml
|
||||||
|
Imports System.Net
|
||||||
|
Imports System.IO
|
||||||
|
|
||||||
|
Namespace CSFramework_Utilities
|
||||||
|
|
||||||
|
Public Class XMLData
|
||||||
|
|
||||||
|
Public Shared Function XMLStringFromDataset(ByVal ds As DataSet) As String
|
||||||
|
Dim sw As New StringWriter()
|
||||||
|
ds.WriteXml(sw, XmlWriteMode.IgnoreSchema)
|
||||||
|
Return sw.ToString()
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Public Shared Function DownloadXMLAsDataset(ByVal url As String, Optional ByVal credentials As Net.NetworkCredential = Nothing) As DataSet
|
||||||
|
|
||||||
|
Dim myXMLReader As XmlReader
|
||||||
|
Dim myDataSet As New DataSet
|
||||||
|
If credentials IsNot Nothing Then
|
||||||
|
Dim myXMLResolver As XmlUrlResolver = New XmlUrlResolver
|
||||||
|
myXMLResolver.Credentials = credentials
|
||||||
|
Dim myXMLSettings As XmlReaderSettings = New XmlReaderSettings
|
||||||
|
myXMLSettings.XmlResolver = myXMLResolver
|
||||||
|
myXMLReader = XmlReader.Create(url, myXMLSettings)
|
||||||
|
Else
|
||||||
|
myXMLReader = XmlReader.Create(url)
|
||||||
|
End If
|
||||||
|
myDataSet.ReadXml(myXMLReader)
|
||||||
|
Return myDataSet
|
||||||
|
End Function
|
||||||
|
|
||||||
|
|
||||||
|
Public Shared Function DownloadXMLWithDatasetPost(ByVal url As String, ByVal datasetToPost As DataSet, ByVal credentials As System.Net.NetworkCredential) As String
|
||||||
|
|
||||||
|
|
||||||
|
Dim xmlrequest As HttpWebRequest = WebRequest.Create(url)
|
||||||
|
xmlrequest.ContentType = "text/xml"
|
||||||
|
xmlrequest.Method = WebRequestMethods.Http.Post
|
||||||
|
xmlrequest.Credentials = credentials
|
||||||
|
xmlrequest.Timeout = 2000000
|
||||||
|
Try
|
||||||
|
|
||||||
|
Dim newStream As Stream = xmlrequest.GetRequestStream()
|
||||||
|
datasetToPost.WriteXml(newStream)
|
||||||
|
newStream.Close()
|
||||||
|
|
||||||
|
Dim xmlresponse As WebResponse = xmlrequest.GetResponse()
|
||||||
|
Dim responseStr As String = ConvertStreamToString(xmlresponse.GetResponseStream)
|
||||||
|
|
||||||
|
|
||||||
|
Return responseStr
|
||||||
|
|
||||||
|
Catch ex As Exception
|
||||||
|
Return "DownloadXMLWithDatasetPost ERROR: " & vbCrLf & ex.ToString
|
||||||
|
End Try
|
||||||
|
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Public Shared Function ConvertStreamToString(ByVal InputStream As System.IO.Stream) As String
|
||||||
|
Dim sr As System.IO.StreamReader = New System.IO.StreamReader(InputStream)
|
||||||
|
Dim responseStr As String = sr.ReadToEnd()
|
||||||
|
Return responseStr
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Public Shared Function DatasetFromXML(ByVal xml As String) As DataSet
|
||||||
|
|
||||||
|
Dim dataSet As DataSet = New DataSet
|
||||||
|
|
||||||
|
|
||||||
|
Dim xmlSR As System.IO.StringReader = New System.IO.StringReader(xml)
|
||||||
|
|
||||||
|
dataSet.ReadXml(xmlSR)
|
||||||
|
|
||||||
|
Return dataSet
|
||||||
|
|
||||||
|
End Function
|
||||||
|
|
||||||
|
|
||||||
|
End Class
|
||||||
|
|
||||||
|
End Namespace
|
||||||
40
Test Datasheets/TestDataSheetUploader/app.config
Normal file
40
Test Datasheets/TestDataSheetUploader/app.config
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<configuration>
|
||||||
|
<appSettings>
|
||||||
|
<add key="UploaderServiceURL" value="https://www.dataforth.com/Services/Uploader.aspx"/>
|
||||||
|
<add key="DirectoryManifestServiceURL" value="https://www.dataforth.com/Services/DirectoryManifest.aspx"/>
|
||||||
|
<add key="DeleteFileServiceURL" value="https://www.dataforth.com/Services/DeleteFile.aspx"/>
|
||||||
|
<add key="ServiceUsername" value="DataforthWebShare"/>
|
||||||
|
<add key="ServicePassword" value="Data6277"/>
|
||||||
|
|
||||||
|
<add key="TestDataSheetPath" value="C:\Users\hoffm\Documents\Customer Folders\Dataforth\product lists"/>
|
||||||
|
<add key="TestFolderPath" value="C:\Users\hoffm\Documents\Customer Folders\Dataforth\product lists"/>
|
||||||
|
|
||||||
|
<add key="InventoryDataStagingFolder" value="C:\TestDataSheetUploader\staging"/>
|
||||||
|
<add key="InventoryDataSourceFolder" value="C:\TestDataSheetUploader\src"/>
|
||||||
|
<add key="InventoryDataFiles" value="AvSelCat.csv,AvSelCus.csv"/>
|
||||||
|
|
||||||
|
<add key="TestMode" value="false"/>
|
||||||
|
|
||||||
|
</appSettings>
|
||||||
|
<system.diagnostics>
|
||||||
|
<sources>
|
||||||
|
<!-- This section defines the logging configuration for My.Application.Log -->
|
||||||
|
<source name="DefaultSource" switchName="DefaultSwitch">
|
||||||
|
<listeners>
|
||||||
|
<add name="FileLog"/>
|
||||||
|
<!-- Uncomment the below section to write to the Application Event Log -->
|
||||||
|
<!--<add name="EventLog"/>-->
|
||||||
|
</listeners>
|
||||||
|
</source>
|
||||||
|
</sources>
|
||||||
|
<switches>
|
||||||
|
<add name="DefaultSwitch" value="Information"/>
|
||||||
|
</switches>
|
||||||
|
<sharedListeners>
|
||||||
|
<add name="FileLog" type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" initializeData="FileLogWriter"/>
|
||||||
|
<!-- Uncomment the below section and replace APPLICATION_NAME with the name of your application to write to the Application Event Log -->
|
||||||
|
<!--<add name="EventLog" type="System.Diagnostics.EventLogTraceListener" initializeData="APPLICATION_NAME"/> -->
|
||||||
|
</sharedListeners>
|
||||||
|
</system.diagnostics>
|
||||||
|
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2"/></startup></configuration>
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<configuration>
|
||||||
|
<appSettings>
|
||||||
|
<add key="UploaderServiceURL" value="https://www.dataforth.com/Services/Uploader.aspx"/>
|
||||||
|
<add key="DirectoryManifestServiceURL" value="https://www.dataforth.com/Services/DirectoryManifest.aspx"/>
|
||||||
|
<add key="DeleteFileServiceURL" value="https://www.dataforth.com/Services/DeleteFile.aspx"/>
|
||||||
|
<add key="ServiceUsername" value="DataforthWebShare"/>
|
||||||
|
<add key="ServicePassword" value="Data6277"/>
|
||||||
|
|
||||||
|
<add key="TestDataSheetPath" value="C:\Users\hoffm\Documents\Customer Folders\Dataforth\product lists"/>
|
||||||
|
<add key="TestFolderPath" value="C:\Users\hoffm\Documents\Customer Folders\Dataforth\product lists"/>
|
||||||
|
|
||||||
|
<add key="InventoryDataStagingFolder" value="C:\TestDataSheetUploader\staging"/>
|
||||||
|
<add key="InventoryDataSourceFolder" value="C:\TestDataSheetUploader\src"/>
|
||||||
|
<add key="InventoryDataFiles" value="AvSelCat.csv,AvSelCus.csv"/>
|
||||||
|
|
||||||
|
<add key="TestMode" value="false"/>
|
||||||
|
|
||||||
|
</appSettings>
|
||||||
|
<system.diagnostics>
|
||||||
|
<sources>
|
||||||
|
<!-- This section defines the logging configuration for My.Application.Log -->
|
||||||
|
<source name="DefaultSource" switchName="DefaultSwitch">
|
||||||
|
<listeners>
|
||||||
|
<add name="FileLog"/>
|
||||||
|
<!-- Uncomment the below section to write to the Application Event Log -->
|
||||||
|
<!--<add name="EventLog"/>-->
|
||||||
|
</listeners>
|
||||||
|
</source>
|
||||||
|
</sources>
|
||||||
|
<switches>
|
||||||
|
<add name="DefaultSwitch" value="Information"/>
|
||||||
|
</switches>
|
||||||
|
<sharedListeners>
|
||||||
|
<add name="FileLog" type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" initializeData="FileLogWriter"/>
|
||||||
|
<!-- Uncomment the below section and replace APPLICATION_NAME with the name of your application to write to the Application Event Log -->
|
||||||
|
<!--<add name="EventLog" type="System.Diagnostics.EventLogTraceListener" initializeData="APPLICATION_NAME"/> -->
|
||||||
|
</sharedListeners>
|
||||||
|
</system.diagnostics>
|
||||||
|
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2"/></startup></configuration>
|
||||||
Binary file not shown.
@@ -0,0 +1,40 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<configuration>
|
||||||
|
<appSettings>
|
||||||
|
<add key="UploaderServiceURL" value="https://www.dataforth.com/Services/Uploader.aspx"/>
|
||||||
|
<add key="DirectoryManifestServiceURL" value="https://www.dataforth.com/Services/DirectoryManifest.aspx"/>
|
||||||
|
<add key="DeleteFileServiceURL" value="https://www.dataforth.com/Services/DeleteFile.aspx"/>
|
||||||
|
<add key="ServiceUsername" value="DataforthWebShare"/>
|
||||||
|
<add key="ServicePassword" value="Data6277"/>
|
||||||
|
|
||||||
|
<add key="TestDataSheetPath" value="C:\Users\hoffm\Documents\Customer Folders\Dataforth\product lists"/>
|
||||||
|
<add key="TestFolderPath" value="C:\Users\hoffm\Documents\Customer Folders\Dataforth\product lists"/>
|
||||||
|
|
||||||
|
<add key="InventoryDataStagingFolder" value="C:\TestDataSheetUploader\staging"/>
|
||||||
|
<add key="InventoryDataSourceFolder" value="C:\TestDataSheetUploader\src"/>
|
||||||
|
<add key="InventoryDataFiles" value="AvSelCat.csv,AvSelCus.csv"/>
|
||||||
|
|
||||||
|
<add key="TestMode" value="false"/>
|
||||||
|
|
||||||
|
</appSettings>
|
||||||
|
<system.diagnostics>
|
||||||
|
<sources>
|
||||||
|
<!-- This section defines the logging configuration for My.Application.Log -->
|
||||||
|
<source name="DefaultSource" switchName="DefaultSwitch">
|
||||||
|
<listeners>
|
||||||
|
<add name="FileLog"/>
|
||||||
|
<!-- Uncomment the below section to write to the Application Event Log -->
|
||||||
|
<!--<add name="EventLog"/>-->
|
||||||
|
</listeners>
|
||||||
|
</source>
|
||||||
|
</sources>
|
||||||
|
<switches>
|
||||||
|
<add name="DefaultSwitch" value="Information"/>
|
||||||
|
</switches>
|
||||||
|
<sharedListeners>
|
||||||
|
<add name="FileLog" type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" initializeData="FileLogWriter"/>
|
||||||
|
<!-- Uncomment the below section and replace APPLICATION_NAME with the name of your application to write to the Application Event Log -->
|
||||||
|
<!--<add name="EventLog" type="System.Diagnostics.EventLogTraceListener" initializeData="APPLICATION_NAME"/> -->
|
||||||
|
</sharedListeners>
|
||||||
|
</system.diagnostics>
|
||||||
|
<startup><supportedRuntime version="v2.0.50727"/></startup></configuration>
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
|
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
|
||||||
|
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
|
||||||
|
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
|
||||||
|
<security>
|
||||||
|
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||||
|
<requestedExecutionLevel level="asInvoker" uiAccess="false"/>
|
||||||
|
</requestedPrivileges>
|
||||||
|
</security>
|
||||||
|
</trustInfo>
|
||||||
|
</assembly>
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<doc>
|
||||||
|
<assembly>
|
||||||
|
<name>
|
||||||
|
TestDataSheetUploader
|
||||||
|
</name>
|
||||||
|
</assembly>
|
||||||
|
<members>
|
||||||
|
<member name="T:TestDataSheetUploader.My.Resources.Resources">
|
||||||
|
<summary>
|
||||||
|
A strongly-typed resource class, for looking up localized strings, etc.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:TestDataSheetUploader.My.Resources.Resources.ResourceManager">
|
||||||
|
<summary>
|
||||||
|
Returns the cached ResourceManager instance used by this class.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:TestDataSheetUploader.My.Resources.Resources.Culture">
|
||||||
|
<summary>
|
||||||
|
Overrides the current thread's CurrentUICulture property for all
|
||||||
|
resource lookups using this strongly typed resource class.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
</members>
|
||||||
|
</doc>
|
||||||
477923
Test Datasheets/TestDataSheetUploader/bin/Debug/manifest.xml
Normal file
477923
Test Datasheets/TestDataSheetUploader/bin/Debug/manifest.xml
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,6 @@
|
|||||||
|
08/22/YYYY 15:47:17 | SyncFolder(TestFolder) started.
|
||||||
|
08/22/YYYY 15:47:32 | Upload FAILED for C:\Users\hoffm\Documents\Customer Folders\Dataforth\product lists\Custom Product Listing.pdf
|
||||||
|
08/22/YYYY 15:47:32 | Upload FAIL MESSAGE: GSSG Service Upload Error: UploadType not recognized: TestFolder
|
||||||
|
08/22/YYYY 15:47:32 | Upload FAILED for C:\Users\hoffm\Documents\Customer Folders\Dataforth\product lists\Custom Product Rules.pdf
|
||||||
|
08/22/YYYY 15:47:32 | Upload FAIL MESSAGE: GSSG Service Upload Error: UploadType not recognized: TestFolder
|
||||||
|
08/22/YYYY 15:47:32 | No obsolete TestFolder files were detected.
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
08/22/YYYY 15:51:12 | SyncFolder(TestFolder) started.
|
||||||
|
08/22/YYYY 15:51:15 | Upload FAILED for C:\Users\hoffm\Documents\Customer Folders\Dataforth\product lists\Custom Product Listing.pdf
|
||||||
|
08/22/YYYY 15:51:15 | Upload FAIL MESSAGE: Dataforth Service Upload Error: Access to the path 'C:\inetpub\wwwroot\dataforth.com\WebShare\ProcessCheckOutTestFolder\Custom Product Listing.pdf' is denied.
|
||||||
|
08/22/YYYY 15:51:15 | Upload FAILED for C:\Users\hoffm\Documents\Customer Folders\Dataforth\product lists\Custom Product Rules.pdf
|
||||||
|
08/22/YYYY 15:51:15 | Upload FAIL MESSAGE: Dataforth Service Upload Error: Access to the path 'C:\inetpub\wwwroot\dataforth.com\WebShare\ProcessCheckOutTestFolder\Custom Product Rules.pdf' is denied.
|
||||||
|
08/22/YYYY 15:51:15 | No obsolete TestFolder files were detected.
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
08/22/YYYY 15:57:38 | SyncFolder(TestFolder) started.
|
||||||
|
08/22/YYYY 15:57:39 | Uploaded file: C:\Users\hoffm\Documents\Customer Folders\Dataforth\product lists\Custom Product Listing.pdf
|
||||||
|
08/22/YYYY 15:57:40 | Uploaded file: C:\Users\hoffm\Documents\Customer Folders\Dataforth\product lists\Custom Product Rules.pdf
|
||||||
|
08/22/YYYY 15:57:40 | No obsolete TestFolder files were detected.
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
08/22/YYYY 16:00:07 | SyncFolder(TestDataSheet) started.
|
||||||
|
08/22/YYYY 16:02:13 | Exception in SyncFolder: System.Xml.XmlException: Data at the root level is invalid. Line 1, position 1.
|
||||||
|
at System.Xml.XmlTextReaderImpl.Throw(Exception e)
|
||||||
|
at System.Xml.XmlTextReaderImpl.ParseRootLevelWhitespace()
|
||||||
|
at System.Xml.XmlTextReaderImpl.ParseDocumentContent()
|
||||||
|
at System.Xml.XmlReader.MoveToContent()
|
||||||
|
at System.Data.DataSet.ReadXml(XmlReader reader, Boolean denyResolving)
|
||||||
|
at CSFramework.CSFramework_Utilities.XMLData.DatasetFromXML(String xml) in C:\Users\hoffm\Documents\Visual Studio 2015\Projects\OEMData\CSFramework\CSFramework\CSFramework_Utilities\XMLData.vb:line 66
|
||||||
|
at TestDataSheetUploader.Module1.SyncFolder(String FolderAlias) in C:\Users\hoffm\Documents\Visual Studio 2015\Projects\Dataforth\TestDataSheetUploader\TestDataSheetUploader\Module1.vb:line 81
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
03/31/YYYY 16:13:55 | SyncFolder(InventoryDataFolder) started.
|
||||||
|
03/31/YYYY 16:14:00 | Exception in SyncFolder: System.Xml.XmlException: Root element is missing.
|
||||||
|
at System.Xml.XmlTextReaderImpl.Throw(Exception e)
|
||||||
|
at System.Xml.XmlTextReaderImpl.ParseDocumentContent()
|
||||||
|
at System.Xml.XmlReader.MoveToContent()
|
||||||
|
at System.Data.DataSet.ReadXml(XmlReader reader, Boolean denyResolving)
|
||||||
|
at TestDataSheetUploader.CSFramework_Utilities.XMLData.DatasetFromXML(String xml) in C:\Users\hoffm\Documents\Visual Studio 2015\Projects\Dataforth\TestDataSheetUploader\TestDataSheetUploader\XMLData.vb:line 72
|
||||||
|
at TestDataSheetUploader.Module1.SyncFolder(String FolderAlias) in C:\Users\hoffm\Documents\Visual Studio 2015\Projects\Dataforth\TestDataSheetUploader\TestDataSheetUploader\Module1.vb:line 112
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
03/31/YYYY 16:18:48 | SyncFolder(InventoryDataFolder) started.
|
||||||
|
03/31/YYYY 16:19:34 | Exception in SyncFolder: System.NullReferenceException: Object reference not set to an instance of an object.
|
||||||
|
at TestDataSheetUploader.Module1.SyncFolder(String FolderAlias) in C:\Users\hoffm\Documents\Visual Studio 2015\Projects\Dataforth\TestDataSheetUploader\TestDataSheetUploader\Module1.vb:line 114
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
03/31/YYYY 16:20:24 | SyncFolder(InventoryDataFolder) started.
|
||||||
|
03/31/YYYY 16:20:30 | Manifest downloaded with 1 files.
|
||||||
|
03/31/YYYY 16:20:30 | Accessing local folder: C:\TestDataSheetUploader\staging
|
||||||
|
03/31/YYYY 16:20:30 | Found at least 1 file in local folder
|
||||||
|
03/31/YYYY 16:20:30 | Requesting upload: AvSelCat.csv
|
||||||
|
03/31/YYYY 16:20:30 | Requesting upload: AvSelCus.csv
|
||||||
|
03/31/YYYY 16:20:30 | Found 2 files that need to be uploaded.
|
||||||
|
03/31/YYYY 16:20:41 | Requested InventoryDataFolder Delete: New Text Document.txt
|
||||||
|
03/31/YYYY 16:20:41 | Found 1 files to delete.
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<configuration>
|
||||||
|
<appSettings>
|
||||||
|
<add key="UploaderServiceURL" value="https://www.dataforth.com/Services/Uploader.aspx"/>
|
||||||
|
<add key="DirectoryManifestServiceURL" value="https://www.dataforth.com/Services/DirectoryManifest.aspx"/>
|
||||||
|
<add key="DeleteFileServiceURL" value="https://www.dataforth.com/Services/DeleteFile.aspx"/>
|
||||||
|
<add key="ServiceUsername" value="DataforthWebShare"/>
|
||||||
|
<add key="ServicePassword" value="Data6277"/>
|
||||||
|
|
||||||
|
<add key="TestDataSheetPath" value="C:\Users\hoffm\Documents\Customer Folders\Dataforth\product lists"/>
|
||||||
|
<add key="TestFolderPath" value="C:\Users\hoffm\Documents\Customer Folders\Dataforth\product lists"/>
|
||||||
|
|
||||||
|
<add key="InventoryDataStagingFolder" value="C:\TestDataSheetUploader\staging"/>
|
||||||
|
<add key="InventoryDataSourceFolder" value="C:\TestDataSheetUploader\src"/>
|
||||||
|
<add key="InventoryDataFiles" value="AvSelCat.csv,AvSelCus.csv"/>
|
||||||
|
|
||||||
|
<add key="TestMode" value="false"/>
|
||||||
|
|
||||||
|
</appSettings>
|
||||||
|
<system.diagnostics>
|
||||||
|
<sources>
|
||||||
|
<!-- This section defines the logging configuration for My.Application.Log -->
|
||||||
|
<source name="DefaultSource" switchName="DefaultSwitch">
|
||||||
|
<listeners>
|
||||||
|
<add name="FileLog"/>
|
||||||
|
<!-- Uncomment the below section to write to the Application Event Log -->
|
||||||
|
<!--<add name="EventLog"/>-->
|
||||||
|
</listeners>
|
||||||
|
</source>
|
||||||
|
</sources>
|
||||||
|
<switches>
|
||||||
|
<add name="DefaultSwitch" value="Information"/>
|
||||||
|
</switches>
|
||||||
|
<sharedListeners>
|
||||||
|
<add name="FileLog" type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" initializeData="FileLogWriter"/>
|
||||||
|
<!-- Uncomment the below section and replace APPLICATION_NAME with the name of your application to write to the Application Event Log -->
|
||||||
|
<!--<add name="EventLog" type="System.Diagnostics.EventLogTraceListener" initializeData="APPLICATION_NAME"/> -->
|
||||||
|
</sharedListeners>
|
||||||
|
</system.diagnostics>
|
||||||
|
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2"/></startup></configuration>
|
||||||
Binary file not shown.
@@ -0,0 +1,40 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<configuration>
|
||||||
|
<appSettings>
|
||||||
|
<add key="UploaderServiceURL" value="https://www.dataforth.com/Services/Uploader.aspx"/>
|
||||||
|
<add key="DirectoryManifestServiceURL" value="https://www.dataforth.com/Services/DirectoryManifest.aspx"/>
|
||||||
|
<add key="DeleteFileServiceURL" value="https://www.dataforth.com/Services/DeleteFile.aspx"/>
|
||||||
|
<add key="ServiceUsername" value="DataforthWebShare"/>
|
||||||
|
<add key="ServicePassword" value="Data6277"/>
|
||||||
|
|
||||||
|
<add key="TestDataSheetPath" value="C:\Users\hoffm\Documents\Customer Folders\Dataforth\product lists"/>
|
||||||
|
<add key="TestFolderPath" value="C:\Users\hoffm\Documents\Customer Folders\Dataforth\product lists"/>
|
||||||
|
|
||||||
|
<add key="InventoryDataStagingFolder" value="C:\TestDataSheetUploader\staging"/>
|
||||||
|
<add key="InventoryDataSourceFolder" value="C:\TestDataSheetUploader\src"/>
|
||||||
|
<add key="InventoryDataFiles" value="AvSelCat.csv,AvSelCus.csv"/>
|
||||||
|
|
||||||
|
<add key="TestMode" value="false"/>
|
||||||
|
|
||||||
|
</appSettings>
|
||||||
|
<system.diagnostics>
|
||||||
|
<sources>
|
||||||
|
<!-- This section defines the logging configuration for My.Application.Log -->
|
||||||
|
<source name="DefaultSource" switchName="DefaultSwitch">
|
||||||
|
<listeners>
|
||||||
|
<add name="FileLog"/>
|
||||||
|
<!-- Uncomment the below section to write to the Application Event Log -->
|
||||||
|
<!--<add name="EventLog"/>-->
|
||||||
|
</listeners>
|
||||||
|
</source>
|
||||||
|
</sources>
|
||||||
|
<switches>
|
||||||
|
<add name="DefaultSwitch" value="Information"/>
|
||||||
|
</switches>
|
||||||
|
<sharedListeners>
|
||||||
|
<add name="FileLog" type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" initializeData="FileLogWriter"/>
|
||||||
|
<!-- Uncomment the below section and replace APPLICATION_NAME with the name of your application to write to the Application Event Log -->
|
||||||
|
<!--<add name="EventLog" type="System.Diagnostics.EventLogTraceListener" initializeData="APPLICATION_NAME"/> -->
|
||||||
|
</sharedListeners>
|
||||||
|
</system.diagnostics>
|
||||||
|
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2"/></startup></configuration>
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
|
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
|
||||||
|
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
|
||||||
|
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
|
||||||
|
<security>
|
||||||
|
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||||
|
<requestedExecutionLevel level="asInvoker" uiAccess="false"/>
|
||||||
|
</requestedPrivileges>
|
||||||
|
</security>
|
||||||
|
</trustInfo>
|
||||||
|
</assembly>
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<doc>
|
||||||
|
<assembly>
|
||||||
|
<name>
|
||||||
|
TestDataSheetUploader
|
||||||
|
</name>
|
||||||
|
</assembly>
|
||||||
|
<members>
|
||||||
|
<member name="T:TestDataSheetUploader.My.Resources.Resources">
|
||||||
|
<summary>
|
||||||
|
A strongly-typed resource class, for looking up localized strings, etc.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:TestDataSheetUploader.My.Resources.Resources.ResourceManager">
|
||||||
|
<summary>
|
||||||
|
Returns the cached ResourceManager instance used by this class.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:TestDataSheetUploader.My.Resources.Resources.Culture">
|
||||||
|
<summary>
|
||||||
|
Overrides the current thread's CurrentUICulture property for all
|
||||||
|
resource lookups using this strongly typed resource class.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
</members>
|
||||||
|
</doc>
|
||||||
Binary file not shown.
@@ -0,0 +1,13 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<FolderContents>
|
||||||
|
<ContentFile>
|
||||||
|
<Filename>AvSelCat.csv</Filename>
|
||||||
|
<Filesize>10900</Filesize>
|
||||||
|
<DateLastUpdated>2019-06-06T05:10:18.549187Z</DateLastUpdated>
|
||||||
|
</ContentFile>
|
||||||
|
<ContentFile>
|
||||||
|
<Filename>AvSelCus.csv</Filename>
|
||||||
|
<Filesize>2529</Filesize>
|
||||||
|
<DateLastUpdated>2019-06-06T01:10:32.1961739Z</DateLastUpdated>
|
||||||
|
</ContentFile>
|
||||||
|
</FolderContents>
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
' <autogenerated/>
|
||||||
|
Option Strict Off
|
||||||
|
Option Explicit On
|
||||||
|
|
||||||
|
Imports System
|
||||||
|
Imports System.Reflection
|
||||||
|
<Assembly: Global.System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.7.2", FrameworkDisplayName:=".NET Framework 4.7.2")>
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1 @@
|
|||||||
|
ff0a48e8544663eb773da2d9d956c2efd790e83a
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
C:\Users\hoffm\Documents\Visual Studio 2015\Projects\Dataforth\TestDataSheetUploader\TestDataSheetUploader\bin\Debug\TestDataSheetUploader.exe.config
|
||||||
|
C:\Users\hoffm\Documents\Visual Studio 2015\Projects\Dataforth\TestDataSheetUploader\TestDataSheetUploader\bin\Debug\TestDataSheetUploader.exe
|
||||||
|
C:\Users\hoffm\Documents\Visual Studio 2015\Projects\Dataforth\TestDataSheetUploader\TestDataSheetUploader\bin\Debug\TestDataSheetUploader.pdb
|
||||||
|
C:\Users\hoffm\Documents\Visual Studio 2015\Projects\Dataforth\TestDataSheetUploader\TestDataSheetUploader\bin\Debug\TestDataSheetUploader.xml
|
||||||
|
C:\Users\hoffm\Documents\Visual Studio 2015\Projects\Dataforth\TestDataSheetUploader\TestDataSheetUploader\obj\Debug\TestDataSheetUploader.Resources.resources
|
||||||
|
C:\Users\hoffm\Documents\Visual Studio 2015\Projects\Dataforth\TestDataSheetUploader\TestDataSheetUploader\obj\Debug\TestDataSheetUploader.vbproj.GenerateResource.Cache
|
||||||
|
C:\Users\hoffm\Documents\Visual Studio 2015\Projects\Dataforth\TestDataSheetUploader\TestDataSheetUploader\obj\Debug\TestDataSheetUploader.exe
|
||||||
|
C:\Users\hoffm\Documents\Visual Studio 2015\Projects\Dataforth\TestDataSheetUploader\TestDataSheetUploader\obj\Debug\TestDataSheetUploader.xml
|
||||||
|
C:\Users\hoffm\Documents\Visual Studio 2015\Projects\Dataforth\TestDataSheetUploader\TestDataSheetUploader\obj\Debug\TestDataSheetUploader.pdb
|
||||||
|
C:\Users\hoffm\Documents\Visual Studio 2015\Projects\Dataforth\TestDataSheetUploader\TestDataSheetUploader\obj\Debug\TestDataSheetUploader.vbprojResolveAssemblyReference.cache
|
||||||
|
C:\Users\kennethhoffman\source\repos\dataforth-enterprise\TestDataSheetUploader\TestDataSheetUploader\bin\Debug\TestDataSheetUploader.exe.config
|
||||||
|
C:\Users\kennethhoffman\source\repos\dataforth-enterprise\TestDataSheetUploader\TestDataSheetUploader\bin\Debug\TestDataSheetUploader.exe
|
||||||
|
C:\Users\kennethhoffman\source\repos\dataforth-enterprise\TestDataSheetUploader\TestDataSheetUploader\bin\Debug\TestDataSheetUploader.pdb
|
||||||
|
C:\Users\kennethhoffman\source\repos\dataforth-enterprise\TestDataSheetUploader\TestDataSheetUploader\bin\Debug\TestDataSheetUploader.xml
|
||||||
|
C:\Users\kennethhoffman\source\repos\dataforth-enterprise\TestDataSheetUploader\TestDataSheetUploader\obj\Debug\TestDataSheetUploader.vbproj.AssemblyReference.cache
|
||||||
|
C:\Users\kennethhoffman\source\repos\dataforth-enterprise\TestDataSheetUploader\TestDataSheetUploader\obj\Debug\TestDataSheetUploader.vbproj.SuggestedBindingRedirects.cache
|
||||||
|
C:\Users\kennethhoffman\source\repos\dataforth-enterprise\TestDataSheetUploader\TestDataSheetUploader\obj\Debug\TestDataSheetUploader.Resources.resources
|
||||||
|
C:\Users\kennethhoffman\source\repos\dataforth-enterprise\TestDataSheetUploader\TestDataSheetUploader\obj\Debug\TestDataSheetUploader.vbproj.GenerateResource.cache
|
||||||
|
C:\Users\kennethhoffman\source\repos\dataforth-enterprise\TestDataSheetUploader\TestDataSheetUploader\obj\Debug\TestDataSheetUploader.vbproj.CoreCompileInputs.cache
|
||||||
|
C:\Users\kennethhoffman\source\repos\dataforth-enterprise\TestDataSheetUploader\TestDataSheetUploader\obj\Debug\TestDataSheetUploader.exe
|
||||||
|
C:\Users\kennethhoffman\source\repos\dataforth-enterprise\TestDataSheetUploader\TestDataSheetUploader\obj\Debug\TestDataSheetUploader.xml
|
||||||
|
C:\Users\kennethhoffman\source\repos\dataforth-enterprise\TestDataSheetUploader\TestDataSheetUploader\obj\Debug\TestDataSheetUploader.pdb
|
||||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,26 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<doc>
|
||||||
|
<assembly>
|
||||||
|
<name>
|
||||||
|
TestDataSheetUploader
|
||||||
|
</name>
|
||||||
|
</assembly>
|
||||||
|
<members>
|
||||||
|
<member name="T:TestDataSheetUploader.My.Resources.Resources">
|
||||||
|
<summary>
|
||||||
|
A strongly-typed resource class, for looking up localized strings, etc.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:TestDataSheetUploader.My.Resources.Resources.ResourceManager">
|
||||||
|
<summary>
|
||||||
|
Returns the cached ResourceManager instance used by this class.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:TestDataSheetUploader.My.Resources.Resources.Culture">
|
||||||
|
<summary>
|
||||||
|
Overrides the current thread's CurrentUICulture property for all
|
||||||
|
resource lookups using this strongly typed resource class.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
</members>
|
||||||
|
</doc>
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
' <autogenerated/>
|
||||||
|
Option Strict Off
|
||||||
|
Option Explicit On
|
||||||
|
|
||||||
|
Imports System
|
||||||
|
Imports System.Reflection
|
||||||
|
<Assembly: Global.System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.7.2", FrameworkDisplayName:=".NET Framework 4.7.2")>
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1 @@
|
|||||||
|
97dae5c7224d0c77b10fa6d035307499d50af816
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
C:\Users\hoffm\Documents\Visual Studio 2015\Projects\Dataforth\TestDataSheetUploader\TestDataSheetUploader\bin\Release\TestDataSheetUploader.exe.config
|
||||||
|
C:\Users\hoffm\Documents\Visual Studio 2015\Projects\Dataforth\TestDataSheetUploader\TestDataSheetUploader\bin\Release\TestDataSheetUploader.exe
|
||||||
|
C:\Users\hoffm\Documents\Visual Studio 2015\Projects\Dataforth\TestDataSheetUploader\TestDataSheetUploader\bin\Release\TestDataSheetUploader.pdb
|
||||||
|
C:\Users\hoffm\Documents\Visual Studio 2015\Projects\Dataforth\TestDataSheetUploader\TestDataSheetUploader\bin\Release\TestDataSheetUploader.xml
|
||||||
|
C:\Users\hoffm\Documents\Visual Studio 2015\Projects\Dataforth\TestDataSheetUploader\TestDataSheetUploader\obj\Release\TestDataSheetUploader.Resources.resources
|
||||||
|
C:\Users\hoffm\Documents\Visual Studio 2015\Projects\Dataforth\TestDataSheetUploader\TestDataSheetUploader\obj\Release\TestDataSheetUploader.vbproj.GenerateResource.Cache
|
||||||
|
C:\Users\hoffm\Documents\Visual Studio 2015\Projects\Dataforth\TestDataSheetUploader\TestDataSheetUploader\obj\Release\TestDataSheetUploader.exe
|
||||||
|
C:\Users\hoffm\Documents\Visual Studio 2015\Projects\Dataforth\TestDataSheetUploader\TestDataSheetUploader\obj\Release\TestDataSheetUploader.xml
|
||||||
|
C:\Users\hoffm\Documents\Visual Studio 2015\Projects\Dataforth\TestDataSheetUploader\TestDataSheetUploader\obj\Release\TestDataSheetUploader.pdb
|
||||||
|
C:\Users\hoffm\Documents\Visual Studio 2015\Projects\Dataforth\TestDataSheetUploader\TestDataSheetUploader\obj\Release\TestDataSheetUploader.vbprojResolveAssemblyReference.cache
|
||||||
|
C:\Users\hoffm\source\repos\Dataforth\TestDataSheetUploader\TestDataSheetUploader\bin\Release\TestDataSheetUploader.exe.config
|
||||||
|
C:\Users\hoffm\source\repos\Dataforth\TestDataSheetUploader\TestDataSheetUploader\obj\Release\TestDataSheetUploader.exe
|
||||||
|
C:\Users\hoffm\source\repos\Dataforth\TestDataSheetUploader\TestDataSheetUploader\obj\Release\TestDataSheetUploader.xml
|
||||||
|
C:\Users\hoffm\source\repos\Dataforth\TestDataSheetUploader\TestDataSheetUploader\obj\Release\TestDataSheetUploader.pdb
|
||||||
|
C:\Users\hoffm\source\repos\Dataforth\TestDataSheetUploader\TestDataSheetUploader\bin\Release\TestDataSheetUploader.exe
|
||||||
|
C:\Users\hoffm\source\repos\Dataforth\TestDataSheetUploader\TestDataSheetUploader\bin\Release\TestDataSheetUploader.pdb
|
||||||
|
C:\Users\hoffm\source\repos\Dataforth\TestDataSheetUploader\TestDataSheetUploader\bin\Release\TestDataSheetUploader.xml
|
||||||
|
C:\Users\hoffm\source\repos\Dataforth\TestDataSheetUploader\TestDataSheetUploader\obj\Release\TestDataSheetUploader.vbprojResolveAssemblyReference.cache
|
||||||
|
C:\Users\hoffm\source\repos\Dataforth\TestDataSheetUploader\TestDataSheetUploader\obj\Release\TestDataSheetUploader.Resources.resources
|
||||||
|
C:\Users\hoffm\source\repos\Dataforth\TestDataSheetUploader\TestDataSheetUploader\obj\Release\TestDataSheetUploader.vbproj.GenerateResource.Cache
|
||||||
|
C:\Users\kennethhoffman\source\repos\dataforth-enterprise\TestDataSheetUploader\TestDataSheetUploader\bin\Release\TestDataSheetUploader.exe.config
|
||||||
|
C:\Users\kennethhoffman\source\repos\dataforth-enterprise\TestDataSheetUploader\TestDataSheetUploader\bin\Release\TestDataSheetUploader.exe
|
||||||
|
C:\Users\kennethhoffman\source\repos\dataforth-enterprise\TestDataSheetUploader\TestDataSheetUploader\bin\Release\TestDataSheetUploader.pdb
|
||||||
|
C:\Users\kennethhoffman\source\repos\dataforth-enterprise\TestDataSheetUploader\TestDataSheetUploader\bin\Release\TestDataSheetUploader.xml
|
||||||
|
C:\Users\kennethhoffman\source\repos\dataforth-enterprise\TestDataSheetUploader\TestDataSheetUploader\obj\Release\TestDataSheetUploader.vbproj.AssemblyReference.cache
|
||||||
|
C:\Users\kennethhoffman\source\repos\dataforth-enterprise\TestDataSheetUploader\TestDataSheetUploader\obj\Release\TestDataSheetUploader.vbproj.SuggestedBindingRedirects.cache
|
||||||
|
C:\Users\kennethhoffman\source\repos\dataforth-enterprise\TestDataSheetUploader\TestDataSheetUploader\obj\Release\TestDataSheetUploader.Resources.resources
|
||||||
|
C:\Users\kennethhoffman\source\repos\dataforth-enterprise\TestDataSheetUploader\TestDataSheetUploader\obj\Release\TestDataSheetUploader.vbproj.GenerateResource.cache
|
||||||
|
C:\Users\kennethhoffman\source\repos\dataforth-enterprise\TestDataSheetUploader\TestDataSheetUploader\obj\Release\TestDataSheetUploader.vbproj.CoreCompileInputs.cache
|
||||||
|
C:\Users\kennethhoffman\source\repos\dataforth-enterprise\TestDataSheetUploader\TestDataSheetUploader\obj\Release\TestDataSheetUploader.exe
|
||||||
|
C:\Users\kennethhoffman\source\repos\dataforth-enterprise\TestDataSheetUploader\TestDataSheetUploader\obj\Release\TestDataSheetUploader.xml
|
||||||
|
C:\Users\kennethhoffman\source\repos\dataforth-enterprise\TestDataSheetUploader\TestDataSheetUploader\obj\Release\TestDataSheetUploader.pdb
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,26 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<doc>
|
||||||
|
<assembly>
|
||||||
|
<name>
|
||||||
|
TestDataSheetUploader
|
||||||
|
</name>
|
||||||
|
</assembly>
|
||||||
|
<members>
|
||||||
|
<member name="T:TestDataSheetUploader.My.Resources.Resources">
|
||||||
|
<summary>
|
||||||
|
A strongly-typed resource class, for looking up localized strings, etc.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:TestDataSheetUploader.My.Resources.Resources.ResourceManager">
|
||||||
|
<summary>
|
||||||
|
Returns the cached ResourceManager instance used by this class.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:TestDataSheetUploader.My.Resources.Resources.Culture">
|
||||||
|
<summary>
|
||||||
|
Overrides the current thread's CurrentUICulture property for all
|
||||||
|
resource lookups using this strongly typed resource class.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
</members>
|
||||||
|
</doc>
|
||||||
98
Test Datasheets/findings-draft.md
Normal file
98
Test Datasheets/findings-draft.md
Normal file
@@ -0,0 +1,98 @@
|
|||||||
|
Subject: RE: Test Datasheets to Website - Full Pipeline Analysis & Recovery Plan
|
||||||
|
|
||||||
|
John, Ken,
|
||||||
|
|
||||||
|
Following up on John's email - I've done a thorough trace of the entire test datasheet pipeline from the DOS test stations through to dataforth.com. Here's what I've found and what needs to be fixed.
|
||||||
|
|
||||||
|
## Current Pipeline (5 Stages)
|
||||||
|
|
||||||
|
### Stage 1 - QuickBASIC Test Programs (WORKING)
|
||||||
|
Test programs (e.g., TEST5B2E.BAS) write results two ways:
|
||||||
|
- LOGIT: binary .DAT files → C:\ATE\{5BLOG,8BLOG,...}\
|
||||||
|
- DATASHEETWRITE: .TXT datasheets → C:\STAGE\
|
||||||
|
|
||||||
|
Filename encoding via GETDSFNAME:
|
||||||
|
- 5-digit WO#: {WO#}-{dash#}.TXT (e.g., 12345-1.TXT)
|
||||||
|
- 6-digit WO# (10xxxx-19xxxx): alpha-encoded (e.g., 123456 → C3456-1.TXT)
|
||||||
|
- Invalid WO#: BAD-{dash#}.TXT
|
||||||
|
|
||||||
|
### Stage 2 - Network Transfer on Boot (BROKEN)
|
||||||
|
AUTOEXEC.BAT v4.1 (deployed 2026-03-12) calls:
|
||||||
|
1. STARTNET.BAT → maps T: = \\D2TESTNAS\test, X: = \\D2TESTNAS\datasheets
|
||||||
|
2. NWTOC.BAT → software updates (working)
|
||||||
|
3. CTONW.BAT → copies .DAT files to T:\TS-XX\LOGS\ (working)
|
||||||
|
4. menux → test menu (working)
|
||||||
|
|
||||||
|
**PROBLEM: CTONWTXT.BAT is never called.** This is the batch file that copies C:\STAGE\*.txt to X: (the datasheets share). It exists on the machines (1,504 bytes, dated 03-12-26) but nothing invokes it. The old ARCHBAT.BAT called it, but ARCHBAT is not called in the current AUTOEXEC either.
|
||||||
|
|
||||||
|
**Result: .TXT datasheets have been accumulating in C:\STAGE on the test stations since approximately September 2025.** Peter confirmed finding old files there.
|
||||||
|
|
||||||
|
**Fix:** Add the following line to CTONW.BAT (or AUTOEXEC.BAT), after the existing .DAT transfer:
|
||||||
|
CALL C:\BAT\CTONWTXT.BAT %MACHINE% X:
|
||||||
|
|
||||||
|
This can be deployed to all 64 stations via the existing NAS software push (Sync-FromNAS pushes updated ProdSW and BAT files to the NAS, and NWTOC pulls them to each station on boot).
|
||||||
|
|
||||||
|
### Stage 3 - DFWDS.exe Processing (BROKEN)
|
||||||
|
DFWDS.exe (Dataforth Website Datasheet program, version 2015-06-08) processes files that arrive in X:\Test_Datasheets:
|
||||||
|
- Validates filenames and content
|
||||||
|
- Renames DOS-encoded filenames to serial number format
|
||||||
|
- Moves valid files → X:\For_Web (currently ~501,000 files)
|
||||||
|
- Moves invalid files → X:\Bad_Datasheets (~18,800 files)
|
||||||
|
- Logs to X:\Datasheets_Log
|
||||||
|
|
||||||
|
**PROBLEM: The config file C:\DFWDS\DFWDS_NAMES.TXT was lost in the crypto wipe.** The exe is hardcoded to read from that path. The ENGR share has a copy of the exe and the config template at \\AD1\Engineering\ENGR\ATE\Test Datasheets\DFWDS\. We also don't have a scheduled task for it on AD2.
|
||||||
|
|
||||||
|
DFWDS last ran successfully on 2026-03-11 (processed 978 files, 0 bad). Before that, there's a gap back to September 2025. The X:\Test_Datasheets folder currently has 338 files waiting to be processed.
|
||||||
|
|
||||||
|
**Fix:**
|
||||||
|
1. Create C:\DFWDS\ on AD2 and restore DFWDS_NAMES.TXT with the correct paths
|
||||||
|
2. Copy DFWDS.exe from the ENGR share
|
||||||
|
3. Create a scheduled task to run it (daily? on a schedule that matches production?)
|
||||||
|
|
||||||
|
**Question for John/Ken:** How often was DFWDS.exe previously run, and was it on a schedule or triggered manually?
|
||||||
|
|
||||||
|
### Stage 4 - TestDataSheetUploader to Website (BROKEN)
|
||||||
|
Ken's VB.NET app (TestDataSheetUploader) syncs X:\For_Web to dataforth.com via three web services:
|
||||||
|
- Uploader.aspx - uploads new/changed files
|
||||||
|
- DirectoryManifest.aspx - gets server file list for comparison
|
||||||
|
- DeleteFile.aspx - removes obsolete files from server
|
||||||
|
|
||||||
|
The app compares local files against the server manifest by filename, size, and last-write-time, and only uploads files modified in the current year.
|
||||||
|
|
||||||
|
Source is on the ENGR share at: \\AD1\Engineering\ENGR\ATE\Test Datasheets\TestDataSheetUploader\
|
||||||
|
Last built: November 2, 2022
|
||||||
|
|
||||||
|
**PROBLEM: Not deployed or scheduled on AD2. The app.config still has dev paths (C:\Users\hoffm\...) instead of production paths.**
|
||||||
|
|
||||||
|
**Fix:**
|
||||||
|
1. Update app.config TestDataSheetPath to point to X:\For_Web
|
||||||
|
2. Deploy the built exe to AD2
|
||||||
|
3. Create a scheduled task
|
||||||
|
|
||||||
|
**Question for Ken:** What was the production config for TestDataSheetPath? Was it X:\For_Web or something else? Was this run on a schedule or manually? Are the web service credentials (DataforthWebShare) still valid?
|
||||||
|
|
||||||
|
### Stage 5 - PDF Generation (UNKNOWN)
|
||||||
|
X:\For_Web_PDF contains ~4,773 PDF versions of datasheets. I haven't identified what generates these.
|
||||||
|
|
||||||
|
**Question:** What creates the PDFs? Is this a separate process we need to restore?
|
||||||
|
|
||||||
|
## What's Currently Working
|
||||||
|
- Test programs are generating data (files from today in X:\Test_Datasheets)
|
||||||
|
- NAS sync (Sync-FromNAS-rsync.ps1) runs every 15 min, pulling .DAT files and pushing software updates
|
||||||
|
- TestDataDB server is running on AD2 (port 3000), importing .DAT files
|
||||||
|
- X: drive (\\AD2\webshare) is accessible with all folders intact
|
||||||
|
- 501K+ historical datasheets in X:\For_Web are preserved
|
||||||
|
|
||||||
|
## What's Broken (in pipeline order)
|
||||||
|
1. CTONWTXT.BAT not called → TXT files stuck on DOS machines
|
||||||
|
2. DFWDS.exe config missing → files in Test_Datasheets not processed
|
||||||
|
3. TestDataSheetUploader not deployed → files in For_Web not synced to website
|
||||||
|
|
||||||
|
## Proposed Fix Order
|
||||||
|
1. Fix CTONW.BAT to call CTONWTXT.BAT → deploy via NAS push
|
||||||
|
2. Restore DFWDS on AD2 (config + exe + scheduled task)
|
||||||
|
3. Deploy TestDataSheetUploader with production config + scheduled task
|
||||||
|
|
||||||
|
Let me know your thoughts and answers to the questions above so we can start restoring this.
|
||||||
|
|
||||||
|
Mike
|
||||||
102
Test Datasheets/findings-update-draft.md
Normal file
102
Test Datasheets/findings-update-draft.md
Normal file
@@ -0,0 +1,102 @@
|
|||||||
|
Subject: Test Datasheets to Website - Pipeline Rebuilt, Status Update & Open Questions
|
||||||
|
|
||||||
|
John, Ken,
|
||||||
|
|
||||||
|
Following up on John's email from this morning — I've completed a full analysis and rebuild of the test datasheet pipeline. Here's where things stand.
|
||||||
|
|
||||||
|
## What We Found
|
||||||
|
|
||||||
|
### The Complete Original Pipeline (5 stages)
|
||||||
|
1. QuickBASIC test programs write .TXT datasheets to C:\STAGE on each DOS machine
|
||||||
|
2. CTONWTXT.BAT copies C:\STAGE\*.txt to X:\Test_Datasheets on boot
|
||||||
|
3. DFWDS.exe validates/renames files, moves valid ones to X:\For_Web
|
||||||
|
4. TestDataSheetUploader syncs X:\For_Web to dataforth.com via HTTP web services
|
||||||
|
5. Website serves datasheets at dataforth.com/TestDataReport
|
||||||
|
|
||||||
|
### What Was Broken
|
||||||
|
- **CTONWTXT.BAT** is never called in the current AUTOEXEC.BAT v4.1 (deployed 2026-03-12). ARCHBAT.BAT isn't called either. TXT datasheets have been accumulating in C:\STAGE on test stations since ~Sept 2025.
|
||||||
|
- **DFWDS.exe** config (C:\DFWDS\DFWDS_NAMES.TXT) was lost in the crypto wipe. No scheduled task. We found the production config and VB6 source on the ENGR share at \\AD1\Engineering\ENGR\ATE\Test Datasheets\DFWDS\Program\.
|
||||||
|
- **TestDataSheetUploader** was not deployed/scheduled on AD2. The app.config still had dev paths.
|
||||||
|
- **Website upload endpoints** (dataforth.com/Services/Uploader.aspx, DirectoryManifest.aspx, DeleteFile.aspx) all return 404. These old ASP.NET services no longer exist on the current website.
|
||||||
|
|
||||||
|
## What We Rebuilt (New Approach)
|
||||||
|
|
||||||
|
Rather than restoring the old DFWDS + TestDataSheetUploader chain, we built a new pipeline that generates datasheets directly from the DAT file data that's already being imported into the test database. This eliminates the need for CTONWTXT.BAT, DFWDS.exe, and the old VB.NET uploader entirely.
|
||||||
|
|
||||||
|
### New Pipeline
|
||||||
|
1. Sync-FromNAS pulls .DAT files from the NAS every 15 minutes (already working)
|
||||||
|
2. import.js parses DAT files into the database (already working)
|
||||||
|
3. **NEW: After import, the system automatically generates exact-match TXT datasheets and writes them to X:\For_Web**
|
||||||
|
|
||||||
|
### What Was Built (all integrated into the TestDataDB app on AD2)
|
||||||
|
|
||||||
|
**Spec Parser (parsers/spec-reader.js)**
|
||||||
|
- Reads the QuickBASIC binary spec files (5BMAIN.DAT, 8BMAIN.DAT, DSCOUT.DAT, SCTMAIN.DAT)
|
||||||
|
- Decodes all 4 product family TYPE structures (SCM5B, 8B, DSCA, DSCT)
|
||||||
|
- 751 model specifications loaded and available for lookup
|
||||||
|
|
||||||
|
**Exact-Match Datasheet Formatter (templates/datasheet-exact.js)**
|
||||||
|
- Reverse-engineered from the QuickBASIC DATASHEETWRITE subroutine source code
|
||||||
|
- Produces TXT output identical to the original format: header, accuracy test table, final test results with spec limits, footer with checklist, NIST certification
|
||||||
|
- Handles all 4 product families with correct column headers per sensor type (Vin, Temp, Iin, Rin), conditional parameters, and family-specific footers
|
||||||
|
- Spec limits displayed using the same TSPECS logic as the original QuickBASIC code
|
||||||
|
|
||||||
|
**Export System (database/export-datasheets.js)**
|
||||||
|
- Generates {serial_number}.TXT files in X:\For_Web
|
||||||
|
- Tracks export status via datasheet_exported_at field in the database (prevents duplicates)
|
||||||
|
- Can run standalone for batch export or automatically after each import
|
||||||
|
- Integrated into import.js as a post-import hook
|
||||||
|
|
||||||
|
**On-Demand PDF Generation**
|
||||||
|
- Added /api/datasheet/:id/pdf endpoint to the web app
|
||||||
|
- Users can download a PDF of any test record from the database UI
|
||||||
|
- Uses the exact-match formatter so PDFs match the original TXT layout
|
||||||
|
|
||||||
|
**Database/UI Improvements**
|
||||||
|
- Added datasheet_exported_at column for tracking export status
|
||||||
|
- Search now defaults to showing all records (was previously empty on load)
|
||||||
|
- Added "ALL" quick filter button
|
||||||
|
- Added "DOWNLOAD PDF" button in the record detail view
|
||||||
|
|
||||||
|
### Data Reconciliation
|
||||||
|
- Cross-referenced 2.27M database records against the 501K existing files in X:\For_Web
|
||||||
|
- 1,436,006 records matched existing files and were marked as already exported
|
||||||
|
- ~830K records remain unexported (many are 7B series which we don't have spec files for yet)
|
||||||
|
|
||||||
|
### For_Web Archive
|
||||||
|
- X:\For_Web had 501K files, making directory scans very slow
|
||||||
|
- Archiving pre-2026 files into year subfolders (X:\For_Web\2013\, X:\For_Web\2014\, etc.)
|
||||||
|
- This reduces the active folder from 501K to ~1,058 current-year files
|
||||||
|
- Archived files remain accessible but won't interfere with the upload process
|
||||||
|
|
||||||
|
## What Still Needs To Be Done
|
||||||
|
|
||||||
|
### 1. Website Upload Replacement (NEEDS INPUT)
|
||||||
|
The old TestDataSheetUploader's web service endpoints (Uploader.aspx, DirectoryManifest.aspx, DeleteFile.aspx) are all dead — they return 404 on the current dataforth.com website.
|
||||||
|
|
||||||
|
**Questions for Ken:**
|
||||||
|
- When did the website change? Was the uploader working before the crypto attack?
|
||||||
|
- What does the current website use for test data lookup? The legacy site (legacy.dataforth.com/TestDataReport_Print.aspx) still works without authentication. The new site (dataforth.com/TestDataReport) requires OIDC login.
|
||||||
|
- Do we need to build a new upload mechanism, or does the website team need to provide new endpoints?
|
||||||
|
- Are the old credentials (DataforthWebShare / Data6277) still valid for anything?
|
||||||
|
|
||||||
|
### 2. CTONWTXT.BAT Fix on DOS Machines (NEEDS INPUT from John)
|
||||||
|
The current AUTOEXEC.BAT calls CTONW.BAT (DAT files only) but not CTONWTXT.BAT (TXT datasheets). Peter confirmed TXT files piling up in C:\STAGE since Sept 2025.
|
||||||
|
|
||||||
|
**However**, with the new pipeline, we may not need CTONWTXT.BAT at all — the datasheets are now generated from DAT data on the server side. The TXT files in C:\STAGE are redundant.
|
||||||
|
|
||||||
|
**Question for John:** Should we still fix CTONWTXT.BAT for redundancy/local backup purposes, or is the server-side generation sufficient? If we do fix it, the change is simple: add `CALL C:\BAT\CTONWTXT.BAT %MACHINE% X:` to CTONW.BAT and deploy via the NAS push.
|
||||||
|
|
||||||
|
### 3. SCM7B Spec File (OPTIONAL)
|
||||||
|
We have spec files for SCM5B, 8B, DSCA, and DSCT. The 7B series (~830K records) can't generate datasheets without a 7BMAIN.DAT or equivalent.
|
||||||
|
|
||||||
|
**Question for John:** Is there a 7B spec DAT file on the ENGR share? Where are the 7B test programs located?
|
||||||
|
|
||||||
|
### 4. TestDataDB Service Permissions
|
||||||
|
The Windows service (testdatadb) runs as SYSTEM, which creates file permission conflicts with maintenance operations. We should either:
|
||||||
|
- Change the service to run as INTRANET\sysadmin
|
||||||
|
- Or set proper inherited permissions on the testdatadb directory
|
||||||
|
|
||||||
|
Let me know your thoughts on the open questions, especially the website upload situation.
|
||||||
|
|
||||||
|
Mike
|
||||||
86
session-logs/2026-03-28-session-ad2.md
Normal file
86
session-logs/2026-03-28-session-ad2.md
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
# Session Log - AD2 - 2026-03-27/28/29
|
||||||
|
|
||||||
|
## Test Datasheet Pipeline Rebuild
|
||||||
|
|
||||||
|
### Pipeline Analysis & Mapping
|
||||||
|
- Mapped complete 5-stage pipeline: DOS test stations → NAS → AD2 sync → DFWDS → website
|
||||||
|
- Identified CTONWTXT.BAT gap (TXT files stuck on DOS machines since Sept 2025)
|
||||||
|
- Confirmed DFWDS.exe config lost in crypto wipe, old website upload endpoints dead (404)
|
||||||
|
- Found production config + VB6 source on ENGR share at \\AD1\Engineering\ENGR\ATE\Test Datasheets\DFWDS\Program\
|
||||||
|
|
||||||
|
### New Server-Side Pipeline Built (C:\Shares\testdatadb\)
|
||||||
|
|
||||||
|
#### New Files Created
|
||||||
|
- `parsers/spec-reader.js` — Binary spec DAT file reader, 1470+ models across 10 spec files
|
||||||
|
- SCM5B: 5BMAIN.DAT (481), 5B45DATA.DAT (56), DB5B48.DAT (3), 5B49_2.DAT (15)
|
||||||
|
- 8B: 8BMAIN.DAT (148)
|
||||||
|
- DSCA: DSCOUT.DAT (23), DSCMAIN4.DAT (391)
|
||||||
|
- DSCT: SCTMAIN.DAT (103)
|
||||||
|
- SCM7B: 7BMAIN.DAT (276)
|
||||||
|
- `parsers/wo-report.js` — Work order status report parser
|
||||||
|
- `templates/datasheet-exact.js` — Exact-match TXT formatter reverse-engineered from QuickBASIC
|
||||||
|
- Supports SCM5B, 8B, DSCA, DSCT, SCM7B families
|
||||||
|
- QB TAB positions and PRINT USING format strings for column alignment
|
||||||
|
- STR$() emulation: leading space for positive, drops leading zero
|
||||||
|
- `database/export-datasheets.js` — Generates {SN}.TXT to X:\For_Web, tracks via forweb_exported_at
|
||||||
|
- `database/import-work-orders.js` — Imports WO reports, creates work_orders + work_order_lines tables
|
||||||
|
- `database/archive-for-web.js` — Archives old For_Web files into year subfolders
|
||||||
|
- `database/generate-customer-pdfs.js` — Generated 73/73 Quatronix customer datasheets
|
||||||
|
- `specdata/` — All binary spec DAT files
|
||||||
|
|
||||||
|
#### Modified Files
|
||||||
|
- `database/import.js` — Post-import hook calls export-datasheets
|
||||||
|
- `database/schema.sql` — Added datasheet_exported_at, forweb_exported_at, work_order columns
|
||||||
|
- `routes/api.js` — Added endpoints:
|
||||||
|
- `/api/datasheet/:id/pdf` — On-demand PDF generation via pdfkit
|
||||||
|
- `/api/datasheet/:id` — Now uses exact-match formatter with styled HTML view
|
||||||
|
- `/api/workorder/:wo` — Work order detail with all test lines
|
||||||
|
- `/api/workorder-search` — WO prefix search
|
||||||
|
- Search endpoint supports `workorder` param
|
||||||
|
- `public/index.html` — Added:
|
||||||
|
- ALL quick filter button, auto-search on page load
|
||||||
|
- Work Order # search field
|
||||||
|
- WO clickable link in record detail → popup with all WO test lines
|
||||||
|
- PDF download button
|
||||||
|
- ForWeb/datasheet export status indicators
|
||||||
|
- `package.json` — Added pdfkit dependency
|
||||||
|
- `C:\Shares\test\scripts\Sync-FromNAS-rsync.ps1` — Added:
|
||||||
|
- STAGE folder sync (NAS STAGE → AD2)
|
||||||
|
- WO report auto-import after sync
|
||||||
|
- STAGE TXT auto-import after sync
|
||||||
|
|
||||||
|
### Database Changes
|
||||||
|
- Added columns: datasheet_exported_at, forweb_exported_at, work_order
|
||||||
|
- Created tables: work_orders (33,745 records), work_order_lines (63,263 records)
|
||||||
|
- 2,277,183 test records linked to work orders via serial number pattern
|
||||||
|
- 1,435,989 records marked as ForWeb exported (matched existing files)
|
||||||
|
|
||||||
|
### Infrastructure
|
||||||
|
- Archived 500,419 pre-2026 files from X:\For_Web into year subfolders (2011-2025)
|
||||||
|
- Created domain service account: INTRANET\svc_testdatadb (OU=ServiceAccounts, won't sync to Entra)
|
||||||
|
- Configured testdatadb Windows service to run as domain account
|
||||||
|
- Fixed HGHAUBNER firewall (enabled File and Printer Sharing) for backup access
|
||||||
|
- Fixed TestDataDB search default (was empty, now auto-searches on load)
|
||||||
|
|
||||||
|
### Customer Issue Resolved (Quatronix/China)
|
||||||
|
- 73/73 requested datasheets generated (TXT + PDF)
|
||||||
|
- Output: Desktop\Quatronix-Datasheets\
|
||||||
|
- Required loading additional spec files: 5B45DATA, DB5B48, 5B49_2, DSCMAIN4, 7BMAIN
|
||||||
|
|
||||||
|
### Formatting Refinements (2026-03-29)
|
||||||
|
- Compared generated TXT against originals, fixed column alignment
|
||||||
|
- QB TAB positions: TAB(5) param, TAB(31) measured, TAB(60-speclen) spec, TAB(61) unit, TAB(71) status
|
||||||
|
- Fixed STR$() emulation: leading space, dropped leading zeros (.03 not 0.03)
|
||||||
|
- Added 7B family support: 31 parameters, 120VAC, Packing Check List, Tested by/QC
|
||||||
|
- View button now shows styled HTML matching PDF layout
|
||||||
|
|
||||||
|
### Email Drafts
|
||||||
|
- `C:\ClaudeTools\Test Datasheets\findings-draft.md` — Initial pipeline analysis
|
||||||
|
- `C:\ClaudeTools\Test Datasheets\findings-update-draft.md` — Updated with rebuild details
|
||||||
|
|
||||||
|
### Open Items
|
||||||
|
1. Website upload: old ASP.NET endpoints dead, need new mechanism
|
||||||
|
2. ~845K records pending ForWeb export (many 7B, older models)
|
||||||
|
3. STAGE import (~8,100 TXT files on NAS) — script ready, not yet run
|
||||||
|
4. MAQ20/PWRM10 (XLS format) and 10D (JSON) integration — future
|
||||||
|
5. Serial numbering standards discussion with John
|
||||||
Reference in New Issue
Block a user