|
| 1 | +#!/bin/bash |
| 2 | +# Brarner.M.Alete™ — Populate SSA Data (Linux/macOS) |
| 3 | +# Creates SSA table and seeds with office location data. |
| 4 | +# Usage: bash install/populate-ssa.sh |
| 5 | +set -e |
| 6 | + |
| 7 | +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" |
| 8 | +BMA_ROOT="$(dirname "$SCRIPT_DIR")" |
| 9 | +DB_PROPS="$BMA_ROOT/servlets/servlet/src/main/webapp/WEB-INF/db.properties" |
| 10 | + |
| 11 | +echo "═══════════════════════════════════════════════════════════════" |
| 12 | +echo " Brarner.M.Alete™ — Populate SSA Database" |
| 13 | +echo "═══════════════════════════════════════════════════════════════" |
| 14 | + |
| 15 | +if [ ! -f "$DB_PROPS" ]; then echo "[!] db.properties not found."; exit 1; fi |
| 16 | + |
| 17 | +DB_USER=$(grep '^db.user=' "$DB_PROPS" | cut -d= -f2-) |
| 18 | +DB_PASS=$(grep '^db.password=' "$DB_PROPS" | cut -d= -f2-) |
| 19 | +MYSQL_CMD="mysql -u${DB_USER}" |
| 20 | +[ -n "$DB_PASS" ] && MYSQL_CMD="$MYSQL_CMD -p${DB_PASS}" |
| 21 | + |
| 22 | +# Create SSA table |
| 23 | +echo "[*] Creating SSA table..." |
| 24 | +$MYSQL_CMD BrarnerScience <<'SQL' |
| 25 | +CREATE TABLE IF NOT EXISTS ssa_offices ( |
| 26 | + id BIGINT AUTO_INCREMENT PRIMARY KEY, |
| 27 | + office_name VARCHAR(255), |
| 28 | + address VARCHAR(500), |
| 29 | + city VARCHAR(100), |
| 30 | + state VARCHAR(50), |
| 31 | + zip_code VARCHAR(10), |
| 32 | + phone VARCHAR(30), |
| 33 | + office_type VARCHAR(50), |
| 34 | + INDEX idx_state (state), |
| 35 | + INDEX idx_city (city) |
| 36 | +); |
| 37 | +SQL |
| 38 | + |
| 39 | +# Check for CSV data or seed from source/ssa configs |
| 40 | +SSA_SRC="$BMA_ROOT/source/ssa" |
| 41 | +DATA_CSV="$BMA_ROOT/data/ssa/ssa-offices.csv" |
| 42 | +mkdir -p "$BMA_ROOT/data/ssa" |
| 43 | + |
| 44 | +if [ -f "$DATA_CSV" ] && [ -s "$DATA_CSV" ]; then |
| 45 | + echo "[*] Loading SSA data from CSV..." |
| 46 | + $MYSQL_CMD BrarnerScience -e "TRUNCATE TABLE ssa_offices;" |
| 47 | + tail -n +2 "$DATA_CSV" | while IFS=',' read -r name addr city state zip phone type; do |
| 48 | + name="${name//\'/\\\'}" addr="${addr//\'/\\\'}" city="${city//\'/\\\'}" |
| 49 | + $MYSQL_CMD BrarnerScience -e "INSERT INTO ssa_offices(office_name,address,city,state,zip_code,phone,office_type) VALUES('$name','$addr','$city','$state','$zip','$phone','$type');" |
| 50 | + done |
| 51 | +elif [ -d "$SSA_SRC" ]; then |
| 52 | + echo "[*] Scanning source/ssa config.xml files..." |
| 53 | + $MYSQL_CMD BrarnerScience -e "TRUNCATE TABLE ssa_offices;" |
| 54 | + find "$SSA_SRC" -name "config.xml" -type f | while read -r cfg; do |
| 55 | + CITY=$(grep -oP '(?<=<socket-host>)[^<]*' "$cfg" 2>/dev/null | head -1) |
| 56 | + STATE=$(basename "$(dirname "$(dirname "$cfg")")") |
| 57 | + OFFICE=$(basename "$(dirname "$cfg")") |
| 58 | + ADDR=$(grep -oP '(?<=<address>)[^<]*' "$cfg" 2>/dev/null | head -1) |
| 59 | + PORT=$(grep -oP '(?<=<socket-port>)[^<]*' "$cfg" 2>/dev/null | head -1) |
| 60 | + OFFICE="${OFFICE//\'/\\\'}" ADDR="${ADDR//\'/\\\'}" |
| 61 | + $MYSQL_CMD BrarnerScience -e "INSERT INTO ssa_offices(office_name,city,state,office_type) VALUES('$OFFICE','$OFFICE','$STATE','field');" 2>/dev/null || true |
| 62 | + done |
| 63 | + ROWS=$($MYSQL_CMD -N -e "SELECT COUNT(*) FROM BrarnerScience.ssa_offices;") |
| 64 | + echo "[OK] ssa_offices: $ROWS rows (from source/ssa configs)" |
| 65 | +else |
| 66 | + echo "[*] No data source found — seeding with sample SSA offices..." |
| 67 | + $MYSQL_CMD BrarnerScience <<'SQL' |
| 68 | +INSERT IGNORE INTO ssa_offices (office_name, address, city, state, zip_code, phone, office_type) VALUES |
| 69 | +('Durham NC','2414 Durham-Chapel Hill Blvd','Durham','NC','27707','1-877-405-3253','field'), |
| 70 | +('Raleigh NC','4701 Old Wake Forest Rd','Raleigh','NC','27609','1-877-803-6514','field'), |
| 71 | +('Charlotte NC','5701 Executive Center Dr','Charlotte','NC','28212','1-866-964-1627','field'), |
| 72 | +('Hickory NC','1985 Tate Blvd SE','Hickory','NC','28602','1-877-628-6705','field'), |
| 73 | +('Apache Junction AZ','253 W Superstition Blvd','Apache Junction','AZ','85120','1-800-772-1213','field'), |
| 74 | +('Twin Falls ID','1441 Fillmore St','Twin Falls','ID','83301','1-866-583-3520','field'), |
| 75 | +('Cocoa FL','1580 Clearlake Rd','Cocoa','FL','32922','1-888-397-5599','field'), |
| 76 | +('West Palm Beach FL','1591 Belvedere Rd','West Palm Beach','FL','33406','1-888-279-9519','field'), |
| 77 | +('Lawrenceburg TN','2285 Buffalo Rd','Lawrenceburg','TN','38464','1-877-405-0457','field'); |
| 78 | +SQL |
| 79 | + ROWS=$($MYSQL_CMD -N -e "SELECT COUNT(*) FROM BrarnerScience.ssa_offices;") |
| 80 | + echo "[OK] ssa_offices seeded: $ROWS rows" |
| 81 | +fi |
| 82 | + |
| 83 | +echo "═══════════════════════════════════════════════════════════════" |
0 commit comments