From 4dd212dff81fdfcdf95364c3d6c3f7e2b841cfec Mon Sep 17 00:00:00 2001 From: mykola2312 <49044616+mykola2312@users.noreply.github.com> Date: Sat, 20 Apr 2024 16:57:43 +0300 Subject: [PATCH] begin implementing m3u loading into database --- .../com/mykola2312/mptv/db/M3ULoader.java | 45 +++++++++++++++++++ .../com/mykola2312/mptv/db/pojo/Category.java | 11 +++++ .../com/mykola2312/mptv/db/pojo/Channel.java | 20 +++++++++ 3 files changed, 76 insertions(+) create mode 100644 src/main/java/com/mykola2312/mptv/db/M3ULoader.java create mode 100644 src/main/java/com/mykola2312/mptv/db/pojo/Category.java create mode 100644 src/main/java/com/mykola2312/mptv/db/pojo/Channel.java diff --git a/src/main/java/com/mykola2312/mptv/db/M3ULoader.java b/src/main/java/com/mykola2312/mptv/db/M3ULoader.java new file mode 100644 index 0000000..b4d966a --- /dev/null +++ b/src/main/java/com/mykola2312/mptv/db/M3ULoader.java @@ -0,0 +1,45 @@ +package com.mykola2312.mptv.db; + +import java.util.ArrayList; +import java.util.HashMap; + +import org.jooq.*; +import org.jooq.impl.*; +import static com.mykola2312.mptv.tables.Category.*; + +import com.mykola2312.mptv.db.pojo.Category; +import com.mykola2312.mptv.parser.M3U; + +public class M3ULoader { + public static void loadAll(ArrayList items) { + // cache categories' ids + HashMap categories = new HashMap<>(); + for (M3U item : items) { + // category + if (item.groupTitle != null) { + Integer id; + Category category = DSL.using(DB.CONFIG) + .select() + .from(CATEGORY) + .where(CATEGORY.TITLE.eq(item.groupTitle)) + .limit(1) + .fetchOne() + .into(Category.class); + if (category == null) { + id = DSL.using(DB.CONFIG) + .insertInto(CATEGORY, CATEGORY.TITLE) + .values(item.groupTitle) + .returningResult(CATEGORY.ID) + .fetchOne() + .into(Integer.class); + } else { + id = category.id; + } + + categories.put(item.groupTitle, id); + } + + // channel + } + } +} diff --git a/src/main/java/com/mykola2312/mptv/db/pojo/Category.java b/src/main/java/com/mykola2312/mptv/db/pojo/Category.java new file mode 100644 index 0000000..bf90707 --- /dev/null +++ b/src/main/java/com/mykola2312/mptv/db/pojo/Category.java @@ -0,0 +1,11 @@ +package com.mykola2312.mptv.db.pojo; + +import jakarta.persistence.Column; + +public class Category { + @Column(name = "ID") + public int id; + + @Column(name = "TITLE") + public String title; +} diff --git a/src/main/java/com/mykola2312/mptv/db/pojo/Channel.java b/src/main/java/com/mykola2312/mptv/db/pojo/Channel.java new file mode 100644 index 0000000..211db7d --- /dev/null +++ b/src/main/java/com/mykola2312/mptv/db/pojo/Channel.java @@ -0,0 +1,20 @@ +package com.mykola2312.mptv.db.pojo; + +import jakarta.persistence.Column; + +public class Channel { + @Column(name = "ID") + public int id; + + @Column(name = "CATEGORY") + public int category; + + @Column(name = "TITLE") + public String title; + + @Column(name = "URL") + public String url; + + @Column(name = "LOGO") + public String logo; +}